[swift] Swift CryptoSwift로 HMAC 생성하기

암호화 기능을 구현하기 위해서는 HMAC(Hierarchical Message Authentication Code)이란 메시지 인증 코드를 생성해야 합니다. 이를 위해 Swift에서는 CryptoSwift라는 라이브러리를 사용할 수 있습니다. CryptoSwift는 다양한 암호화 기능을 제공하며, HMAC 생성도 지원합니다.

1. CryptoSwift 설치

첫 번째로, CryptoSwift를 프로젝트에 설치해야 합니다. 이를 위해 Swift 패키지 관리자인 Swift Package Manager를 사용할 수 있습니다.

.package(url: "https://github.com/krzyzanowskim/CryptoSwift.git", .upToNextMajor(from: "1.4.0"))

위의 코드를 Package.swift 파일에 추가하고, 프로젝트를 업데이트하면 CryptoSwift가 설치됩니다.

2. HMAC 생성하기

다음은 CryptoSwift를 사용하여 HMAC을 생성하는 예제 코드입니다.

import CryptoSwift

func generateHMAC(key: String, message: String) -> String? {
    guard let keyData = key.data(using: .utf8), let messageData = message.data(using: .utf8) else {
        return nil
    }
    
    // CryptoSwift 라이브러리를 사용하여 HMAC 생성
    let hmac = HMAC(key: keyData.bytes, variant: .sha256)
    let result = try? hmac.authenticate(messageData.bytes)
    
    // HMAC을 16진수 문자열로 변환하여 반환
    return result?.toHexString()
}

// HMAC 생성 예제
let key = "mySecretKey"
let message = "Hello, World!"

if let hmac = generateHMAC(key: key, message: message) {
    print("HMAC: \(hmac)")
} else {
    print("Failed to generate HMAC.")
}

위의 코드는 generateHMAC 함수를 정의하고, 이를 이용하여 HMAC을 생성합니다. 함수는 keymessage라는 두 개의 파라미터를 받아서 HMAC을 반환합니다.

위의 예제에서는 HMAC의 해시 알고리즘으로 SHA256을 사용했습니다(variant: .sha256). 다른 해시 알고리즘을 사용하려면 해당하는 variant 값을 변경하면 됩니다.

결론

이번 글에서는 Swift CryptoSwift 라이브러리를 사용하여 HMAC을 생성하는 방법에 대해 알아보았습니다. HMAC 생성을 위해 CryptoSwift를 활용하면 안전하고 간편하게 암호화 기능을 구현할 수 있습니다.

참고 자료