Kotlin HMAC 생성 방법

0
post-thumbnail

HMAC

  • Hash-based Message Authentication Code
  • 메세지의 변조 여부를 판별하는 방법
  • 송신자와 수신자가 미리 나눠 가진 공통의 Key를 기준으로 해싱을 수행한다.

Kotlin Code Sample

import java.util.Base64
import javax.crypto.Mac
import javax.crypto.spec.SecretKeySpec

const val ALGORITHM = "HmacSHA256"

fun createHmac(message: String, key: String): String {
    val keySpec = SecretKeySpec(Base64.getUrlDecoder().decode(key), ALGORITHM)
    val mac = Mac.getInstance(ALGORITHM)
    mac.init(keySpec)

	// 생성된 해시의 인코딩 방식은 달라질 수 있다. 여기서는 Base64url safe를 사용한다.
    val hmac = Base64.getUrlEncoder().withoutPadding().encodeToString(mac.doFinal(message.toByteArray()))
    return hmac
}

Reference

0개의 댓글