[swift] Swift CryptoSwift로 문자열 암호화하기

이번 글에서는 Swift와 CryptoSwift 라이브러리를 사용하여 문자열을 암호화하는 방법에 대해 알아보겠습니다.

CryptoSwift 라이브러리 설치

CryptoSwift는 Swift에서 암호화 관련 작업을 수행하기 위한 라이브러리입니다. Cocoapods를 사용하여 CryptoSwift를 설치할 수 있습니다. 프로젝트 폴더에서 Podfile을 열고 다음 줄을 추가합니다.

pod 'CryptoSwift', '~> 1.4.0'

그리고 터미널에서 다음 명령어를 실행하여 라이브러리를 설치합니다.

$ pod install

암호화하기

CryptoSwift를 사용하여 문자열을 암호화하는 방법을 살펴보겠습니다. 예를 들어, AES 암호화 방식을 사용하여 문자열을 암호화하고 해독하는 작업을 수행하겠습니다.

import CryptoSwift

func encryptString(message: String, key: String, iv: String) -> String? {
    guard let data = message.data(using: .utf8) else { return nil }
    do {
        let aes = try AES(key: key, iv: iv)
        let encrypted = try aes.encrypt(data)
        let encryptedString = encrypted.base64EncodedString()
        return encryptedString
    } catch {
        print("Encryption failed: \(error.localizedDescription)")
        return nil
    }
}

func decryptString(encryptedString: String, key: String, iv: String) -> String? {
    guard let encryptedData = Data(base64Encoded: encryptedString) else { return nil }
    do {
        let aes = try AES(key: key, iv: iv)
        let decrypted = try aes.decrypt(encryptedData)
        let decryptedString = String(data: decrypted, encoding: .utf8)
        return decryptedString
    } catch {
        print("Decryption failed: \(error.localizedDescription)")
        return nil
    }
}

위의 코드에서 encryptString 함수는 주어진 메시지를 AES 알고리즘을 사용하여 암호화하고, decryptString 함수는 암호화된 문자열을 원래의 문자열로 복호화하는 기능을 수행합니다.

사용 예제

이제 위에서 작성한 함수를 사용하여 문자열을 암호화하고 해독하는 간단한 예제를 살펴보겠습니다.

let message = "Hello, World!"
let key = "01234567890123456789012345678901" // 32 bytes
let iv = "0123456789012345" // 16 bytes

if let encryptedString = encryptString(message: message, key: key, iv: iv) {
    print("Encrypted: \(encryptedString)")
    
    if let decryptedString = decryptString(encryptedString: encryptedString, key: key, iv: iv) {
        print("Decrypted: \(decryptedString)")
    }
}

위의 예제에서는 “Hello, World!”라는 문자열을 암호화한 후, 다시 복호화하여 원래의 문자열을 출력합니다.

이제 CryptoSwift를 사용하여 문자열을 암호화하는 방법을 알게 되었습니다. 암호화 작업을 수행해야 하는 경우에는 CryptoSwift를 활용하여 보안성을 갖춘 애플리케이션을 개발할 수 있습니다.

참고 자료