[swift] Swift CryptoSwift로 대칭 암호화하기

암호화는 보안을 유지하고 데이터를 안전하게 전송 또는 저장하기 위해 매우 중요합니다. Swift에서 대칭 암호화를 구현하기 위해 CryptoSwift라는 라이브러리를 사용할 수 있습니다. 이 블로그 포스트에서는 CryptoSwift를 사용하여 문자열을 대칭 암호화하는 방법을 알아보겠습니다.

CryptoSwift 설치

CryptoSwift를 사용하기 위해 먼저 프로젝트에 라이브러리를 추가해야 합니다. 프로젝트의 Podfile에 다음의 코드를 추가합니다:

pod 'CryptoSwift'

그리고 터미널을 열어서 프로젝트 폴더로 이동한 후 아래의 명령어를 실행합니다:

pod install

이제 CryptoSwift가 프로젝트에 추가되었습니다.

대칭 암호화 구현하기

CryptoSwift를 사용하여 대칭 암호화를 구현하는 방법은 매우 간단합니다. 우선 import CryptoSwift를 추가하여 CryptoSwift 라이브러리를 가져옵니다.

다음은 대칭 암호화를 위한 기본적인 코드입니다:

import CryptoSwift

func encryptMessage(message: String, key: String) throws -> String {
    let keyData = key.data(using: .utf8)!
    let iv = AES.randomIV()
    let aes = try AES(key: keyData, blockMode: CBC(iv: iv))
    let encrypted = try aes.encrypt(message.bytes)
    return encrypted.toBase64() ?? ""
}

func decryptMessage(encryptedText: String, key: String) throws -> String {
    let keyData = key.data(using: .utf8)!
    let iv = AES.randomIV()
    let aes = try AES(key: keyData, blockMode: CBC(iv: iv))
    let decrypted = try aes.decrypt(Array(base64: encryptedText))
    return String(data: Data(decrypted), encoding: .utf8) ?? ""
}

이 예제에서는 AES 대칭 암호화 방식을 사용합니다. encryptMessage 함수는 주어진 메시지를 암호화하고, decryptMessage 함수는 암호화된 텍스트를 복호화합니다.

사용 예시

let message = "Hello, World!"
let key = "secretKey"

do {
    let encryptedText = try encryptMessage(message: message, key: key)
    print("Encrypted Text: \(encryptedText)")
    
    let decryptedText = try decryptMessage(encryptedText: encryptedText, key: key)
    print("Decrypted Text: \(decryptedText)")
} catch {
    print("Encryption/Decryption Error: \(error)")
}

위의 코드를 실행하면 “Hello, World!”라는 메시지가 암호화되고 복호화되어 출력됩니다.

결론

이렇게 CryptoSwift를 사용하여 Swift에서 대칭 암호화를 구현할 수 있습니다. 암호화는 보안에 중요한 역할을 하므로 데이터 전송이나 저장시에 꼭 사용해야 합니다. CryptoSwift는 간편한 API를 제공하므로 쉽게 대칭 암호화를 구현할 수 있습니다.

참고 자료