[swift] CryptoSwift를 활용한 데이터의 암호화 및 안전한 전송 방법

안녕하세요! 이번에는 Swift를 사용하여 데이터를 암호화하고 안전하게 전송하는 방법에 대해 알아보겠습니다. 이를 위해 CryptoSwift라는 암호화 라이브러리를 사용할 것입니다.

CryptoSwift란?

CryptoSwift는 오픈 소스 암호화 라이브러리로, AES, RSA, HMAC 등 다양한 암호화 알고리즘을 지원합니다. 데이터를 암호화하거나 해독할 때 사용할 수 있는 간단하고 강력한 도구입니다.

CryptoSwift 설치하기

먼저, Cocoapods를 통해 CryptoSwift를 설치해야 합니다. 프로젝트 폴더에서 Podfile을 만들고 다음과 같이 작성합니다.

platform :ios, '11.0'
use_frameworks!

target 'YourApp' do
    pod 'CryptoSwift', '~> 1.4.1'
end

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

$ pod install

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

데이터 암호화하기

CryptoSwift를 사용하여 데이터를 암호화하기 위해서는 기본적으로 키 (Key) 가 필요합니다. 암호화에 사용할 키를 생성하고, 원본 데이터를 암호화할 수 있습니다.

import CryptoSwift

let key = "MySecretKey123456" // 사용할 키
let data = "Hello, World!" // 암호화할 데이터

do {
    let encryptedData = try AES(key: key, iv: nil).encrypt(Array(data.utf8))
    let encryptedString = encryptedData.toBase64() // Base64 인코딩된 문자열로 변환
    print("암호화된 데이터: \(encryptedString)")
} catch {
    print("암호화 실패: \(error.localizedDescription)")
}

위 코드에서는 AES 알고리즘을 사용하여 데이터를 암호화하고 있습니다. AES(key: iv:) 생성자의 첫 번째 인자로 사용할 키를 전달하고, 두 번째 인자로는 초기화 벡터 (IV)를 전달합니다. 여기서는 초기화 벡터를 사용하지 않으므로 nil을 전달했습니다. encrypt(_:) 메서드는 암호화할 데이터를 Array<UInt8> 형태로 전달하고, 암호화된 데이터를 반환합니다.

데이터 복호화하기

암호화된 데이터를 수신한 경우, 복호화하여 원래 데이터를 복원할 수 있습니다.

import CryptoSwift

let key = "MySecretKey123456" // 사용했던 키
let encryptedString = "qRUcgmMuu6n0xFPNoWujUg==" // 암호화된 데이터

do {
    guard let encryptedData = Data(base64Encoded: encryptedString) else {
        throw NSError(domain: "InvalidData", code: 0, userInfo: nil)
    }
    
    let decryptedData = try AES(key: key, iv: nil).decrypt(Array(encryptedData))
    let decryptedString = String(data: Data(decryptedData), encoding: .utf8)
    print("복호화된 데이터: \(decryptedString!)")
} catch {
    print("복호화 실패: \(error.localizedDescription)")
}

위 코드에서는 암호화된 데이터를 Base64 디코딩하여 Data 형식으로 변환합니다. decrypt(_:) 메서드를 사용하여 데이터를 복호화하고, 복호화된 데이터를 Data에서 String 형태로 변환하여 출력합니다.

요약

이제 CryptoSwift를 사용하여 데이터를 암호화하고, 전송하고, 복호화하는 방법을 알아보았습니다. CryptoSwift를 사용하면 간단하게 데이터를 암호화할 수 있으며, 데이터의 안전한 전송에 활용할 수 있습니다.

더 많은 정보를 얻으시려면 CryptoSwift GitHub 저장소를 참조해주세요.