[swift] Swift CryptoSwift로 RSA 키 쌍 불러오기
RSA는 대표적인 공개 키 암호화 알고리즘 중 하나입니다. 기존에 생성된 RSA 키 쌍을 사용하여 암호화 및 복호화를 수행하려면 키를 불러와야 합니다. 이번 글에서는 Swift CryptoSwift 라이브러리를 사용하여 RSA 키 쌍을 불러오는 방법에 대해 알아보겠습니다.
CryptoSwift 라이브러리 설치
CryptoSwift는 Swift에서 암호화 및 해시 기능을 제공해주는 오픈 소스 라이브러리입니다. 이 라이브러리를 사용하여 RSA 키 쌍을 불러오기 위해 먼저 라이브러리를 설치해야 합니다.
- 프로젝트의 Podfile에 다음과 같이 CryptoSwift를 추가합니다:
pod 'CryptoSwift'
- 터미널에서 프로젝트 폴더로 이동한 후
pod install
명령어를 실행하여 라이브러리를 설치합니다.
RSA 키 쌍 생성 및 저장
RSA 키 쌍을 불러오기 위해 먼저 키를 생성하고 저장해야 합니다.
import CryptoSwift
import Foundation
func generateKeyPair() {
// RSA 키 쌍 생성
let rsa = RSA()
let keyPair = try! rsa.generateKeyPair(size: .bits2048)
// 개인키 (privateKey)를 PEM 형식으로 저장
let privateKeyPEM = try! keyPair.privateKey.pemString(encoding: .pem)
try! privateKeyPEM.write(toFile: "private_key.pem", atomically: true, encoding: .utf8)
// 공개키 (publicKey)를 PEM 형식으로 저장
let publicKeyPEM = try! keyPair.publicKey.pemString(encoding: .pem)
try! publicKeyPEM.write(toFile: "public_key.pem", atomically: true, encoding: .utf8)
}
위 코드에서는 CryptoSwift의 RSA
클래스를 사용하여 2048비트의 RSA 키 쌍을 생성하고, 개인키와 공개키를 PEM 형식으로 저장하는 예제입니다. 생성된 개인키는 “private_key.pem” 파일로 공개키는 “public_key.pem” 파일로 저장됩니다.
RSA 키 쌍 불러오기
이제 생성된 RSA 키 쌍을 불러와서 사용할 수 있습니다.
import CryptoSwift
import Foundation
func loadKeyPair() {
// 개인키 불러오기
let privateKeyPEM = try! String(contentsOfFile: "private_key.pem", encoding: .utf8)
let privateKey = try! RSA.KeyReference.pemString(privateKeyPEM, encoding: .pem)
// 공개키 불러오기
let publicKeyPEM = try! String(contentsOfFile: "public_key.pem", encoding: .utf8)
let publicKey = try! RSA.KeyReference.pemString(publicKeyPEM, encoding: .pem)
// 불러온 키 쌍 확인
print("Loaded private key: \(privateKey)")
print("Loaded public key: \(publicKey)")
}
위 코드에서는 파일로 저장된 개인키와 공개키를 불러와 RSA.KeyReference
의 pemString
메서드를 사용하여 키를 생성합니다. 생성된 키는 변수에 할당되고, 출력하여 확인할 수 있습니다.
참고 자료
- CryptoSwift Github 저장소: https://github.com/krzyzanowskim/CryptoSwift
- CryptoSwift 문서: https://cryptoswift.io/
이번 글에서는 Swift CryptoSwift 라이브러리를 사용하여 RSA 키 쌍을 불러오는 방법을 알아보았습니다. 암호화와 관련된 작업을 위해 RSA 키 쌍을 사용해야 한다면, 위 코드와 참고 자료를 활용해보세요.