[ios] HMAC 계산

iOS 애플리케이션을 개발하다 보면 데이터 무결성을 보호하거나 메시지 인증에 HMAC을 사용해야 하는 경우가 있습니다. HMAC은 해시 함수를 이용하여 메시지에 대한 인증 코드를 생성하는 메커니즘으로, 메시지 무결성을 검증하고 인증할 수 있습니다.

이를 위해 iOS에서는 CommonCrypto 프레임워크를 활용할 수 있습니다. 이 프레임워크에 포함된 함수들을 사용하여 HMAC을 계산할 수 있습니다.

단계 1: 데이터와 키 정의

먼저 HMAC을 계산하기 위해 필요한 데이터와 키를 정의해야 합니다. 데이터는 NSData로, 키는 NSDataString 형식으로 정의될 수 있습니다.

let data = "Hello, World".data(using: .utf8)!
let key = "mySecretKey".data(using: .utf8)!

단계 2: HMAC 계산하기

다음으로, 정의된 데이터와 키를 사용하여 HMAC을 계산합니다.

import CommonCrypto

func calculateHMAC(data: Data, key: Data) -> Data? {
    var digest = [UInt8](repeating: 0, count: Int(CC_SHA256_DIGEST_LENGTH))
    key.withUnsafeBytes { keyBytes in
        data.withUnsafeBytes { dataBytes in
            CCHmac(CCHmacAlgorithm(kCCHmacAlgSHA256), keyBytes, key.count, dataBytes, data.count, &digest)
        }
    }
    return Data(digest)
}

let hmac = calculateHMAC(data: data, key: key)

위의 코드에서 CC_SHA256_DIGEST_LENGTH는 사용할 해시 알고리즘에 따라 달라질 수 있으니 주의해야 합니다.

결과 확인

계산된 HMAC은 바이너리 데이터로 반환되며, Base64나 Hex 등으로 인코딩하여 사용할 수 있습니다.

이렇게 iOS에서는 CommonCrypto 프레임워크를 사용하여 간단히 HMAC을 계산할 수 있습니다. 데이터 보안 및 메시지 무결성을 보호하기 위해 HMAC을 사용하는 경우에 유용하게 활용할 수 있습니다.

참고 자료