Documents

Hash Algorithm
  • Cryptography hash('digest’라고도 함)는 텍스트 또는 데이터 파일에 대한 일종의 'signature'.

SHA

SHA-256

  • Secure Hash Algorithm

  • SHA 알고리즘의 한 종류로 256bit로 구성된 64자리 문자열 반환

  • 2256 개의 경우의 수를 만들 수 있음

  • 어떤 길이의 값을 입력하더라도 256bit의 고정된 결과값 출력

    • 8bit → 1byte, 2byte → char

    • 256bit → 32byte

  • 단방향성으로 복호화가 불가

  • 16진법(hex)

val hash1 = MessageDigest
    .getInstance("SHA-256")
    .digest(origin.toByteArray())
    .fold("", { str, it -> str + "%02x".format(it) })

// required "org.bouncycastle:bcprov-jdk15on"
val hash2 = MessageDigest
    .getInstance("SHA-256")
    .digest(origin.toByteArray())
    .let { String(Hex.encode(it)) }

val hash3 = MessageDigest
    .getInstance("SHA-256")
    .digest(origin.toByteArray())
    .let { BigInteger(1, it).toString(16).padStart(32, '0') }

MD5

References