SHA256 암호화

송준희·2021년 5월 1일
0

Back

목록 보기
3/7

프론트에서 사용자가 id와 password를 입력하고 로그인 버튼을 누른다.
만약 프론트에서 password가 암호화되지 않은 상태로 서버로 전송된다면
나쁜 사람들이 네트워크 상에서 지나가는 packet을 캡처하여 password를 확인할 수 있다.

이를 '스니핑(sniffing)'이라고 부르는데
스니핑을 방지하기 위해서는 프론트에서 서버로 password를 암호화해서 전송해야 한다.
암호화하는 방식은 여러 가지가 있는데 여기서는 SHA256 방식을 다뤄보려고 한다.

SHA256는 단방향 암호화 방식이기 때문에 복호화할 수 없다.
그렇기 때문에 로그인할 때 입력받은 비밀번호를 암호화해서 기존에 암호화된 비밀번호화 일치하는지 확인해야 한다.
아래의 코드는 코틀린에서 문자열을 SHA256으로 암호화하는 코드이다.

object SHA256 {
    fun encryptPassword(password: String): String {
        val encoder = MessageDigest.getInstance("SHA-256")
        val byteArray = encoder.digest(password.toByteArray())

        val encryptedPassword = StringBuffer()
        for (byte in byteArray) {
            val hashedByte = (byte.and(0xff.toByte()) + 0x100).toString(16)
            if (hashedByte.length > 2)
                encryptedPassword.append(hashedByte.substring(1))
            else
                encryptedPassword.append(hashedByte)
        }
        return encryptedPassword.toString()
    }
}
profile
오늘 달리면 내일 걸을 수 있다!

0개의 댓글