[swift] Swift에서의 블록 암호화 모드 활용 방법
암호화는 데이터의 보안을 위해 필수적인 기능입니다. Swift에서는 CryptoKit
프레임워크를 사용하여 다양한 암호화 작업을 수행할 수 있습니다. 이 중에서도 블록 암호화 모드는 자주 사용되며, AES-GCM, AES-CBC 등 다양한 알고리즘을 지원합니다.
AES-GCM 모드로 암호화하기
AES-GCM은 인증 기능과 함께 암호화를 제공하는 블록 암호화 모드입니다. 다음 예제는 AES-GCM 모드로 데이터를 암호화하는 방법을 보여줍니다.
import CryptoKit
// 암호화할 데이터
let plainText = "암호화될 메시지"
// 256비트 암호화 키
let keyData = SymmetricKey(size: .bits256)
do {
// CipherText, Additional 데이터, 태그 생성
let sealedBox = try AES.GCM.seal(
plainText.data(using: .utf8)!,
using: keyData
)
// 암호화된 데이터를 Base64로 인코딩하여 출력
let encryptedText = sealedBox.ciphertext.base64EncodedString()
print("암호화된 메시지: \(encryptedText)")
// 만들어진 태그를 Base64로 인코딩하여 출력
let tag = sealedBox.tag.base64EncodedString()
print("태그: \(tag)")
} catch {
print("암호화 실패: \(error)")
}
AES-CBC 모드로 암호화하기
AES-CBC 모드는 블록 암호화 중에서도 가장 일반적으로 사용되는 모드입니다. 다음은 AES-CBC 모드로 데이터를 암호화하는 예제입니다.
import CryptoKit
// 암호화할 데이터
let plainText = "암호화될 메시지"
// 256비트 암호화 키
let keyData = SymmetricKey(size: .bits256)
do {
// 초기화 벡터 생성
let ivData = AES.randomIV(size: .aes128)
// CipherText 생성
let cipherText = try AES.CBC.encrypt(
plainText.data(using: .utf8)!,
using: keyData,
iv: ivData
)
// 암호화된 데이터를 Base64로 인코딩하여 출력
let encryptedText = cipherText.base64EncodedString()
print("암호화된 메시지: \(encryptedText)")
} catch {
print("암호화 실패: \(error)")
}