[swift] Swift KeychainAccess를 사용하여 암호화된 데이터를 복호화하는 방법

앱 개발 시 사용자의 개인 정보를 보호하고 암호화된 데이터를 안전하게 저장하는 것은 매우 중요합니다. Swift에서는 Swift KeychainAccess 라이브러리를 사용하여 간단하게 데이터를 암호화하고 복호화할 수 있습니다.

Swift KeychainAccess 라이브러리 설치

먼저, 프로젝트에 Swift KeychainAccess 라이브러리를 추가해야 합니다. 프로젝트의 Podfile에 아래와 같이 추가합니다.

pod 'SwiftyKeychainKit'

그리고 터미널에서 프로젝트 경로로 이동한 후, 다음 명령을 실행하여 라이브러리를 설치합니다.

$ pod install

데이터 암호화와 복호화

Swift KeychainAccess 라이브러리를 사용하여 데이터를 암호화하고 복호화하는 방법을 알아보겠습니다.

import SwiftyKeychainKit

func encryptData(data: Data, key: String) -> Bool {
    do {
        let keychain = Keychain(withService: "com.example.app")
        try keychain
            .synchronizable(false)
            .accessibility(.whenUnlocked)
            .set(data, key: key)
        return true
    } catch {
        print("Encryption failed: \(error.localizedDescription)")
        return false
    }
}

func decryptData(key: String) -> Data? {
    do {
        let keychain = Keychain(withService: "com.example.app")
        let data = try keychain.get(key)
        return data
    } catch {
        print("Decryption failed: \(error.localizedDescription)")
        return nil
    }
}

위의 코드에서, encryptData(data: Data, key: String) 함수는 입력된 데이터를 암호화하여 Keychain에 저장합니다. decryptData(key: String) 함수는 지정된 키로 저장된 데이터를 복호화하여 반환합니다.

암호화된 데이터를 저장하기 위해 Keychain 객체를 생성한 후, accessibility 프로퍼티를 사용하여 데이터에 대한 액세스 제한 수준을 설정할 수 있습니다. 위 예제에서는 whenUnlocked 액세스 제한 수준을 사용하고 있습니다.

데이터를 암호화하고 복호화하는 데 성공하면 반환 값으로 true를, 그렇지 않으면 false를 반환합니다.

예제 사용 방법

let data = "Hello, World!".data(using: .utf8)!
let key = "myKey"

if encryptData(data: data, key: key) {
    if let decryptedData = decryptData(key: key) {
        let decryptedString = String(data: decryptedData, encoding: .utf8)
        print("Decrypted data: \(decryptedString ?? "")")
    }
}

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

참고 문서

Swift KeychainAccess 라이브러리는 데이터를 안전하게 암호화하고 저장할 수 있도록 도와줍니다. 데이터 보안을 강화하고 사용자 개인 정보를 보호하기 위해 이 라이브러리를 사용해보세요.