[swift] Swift CryptoSwift로 암호화된 파일 저장하기

이번에는 Swift CryptoSwift 라이브러리를 사용하여 파일을 암호화하여 저장하는 방법에 대해 알아보겠습니다.

CryptoSwift 라이브러리 사용하기

CryptoSwift는 Swift로 작성된 암호화 및 해시 라이브러리입니다. 이 라이브러리를 사용하면 간단하게 파일을 암호화할 수 있습니다. Cocoapods를 통해 라이브러리를 설치해보겠습니다.

pod 'CryptoSwift'

파일 암호화하기

import CryptoSwift

func encryptFile(filePath: String, password: String) {
    do {
        let data = try Data(contentsOf: URL(fileURLWithPath: filePath))
        let encryptedBytes = try AES(key: password.bytes, blockMode: .CBC, padding: .pkcs7).encrypt(data.bytes)
        let encryptedData = Data(encryptedBytes)
        let encryptedFilePath = filePath + ".encrypted"
        try encryptedData.write(to: URL(fileURLWithPath: encryptedFilePath))
    } catch {
        print("Error encrypting file: \(error)")
    }
}

위의 코드는 filePath에 지정된 파일을 읽고, password를 사용하여 해당 파일을 AES 알고리즘으로 암호화한 다음 .encrypted 확장자를 가진 새로운 파일로 저장하는 기능을 수행합니다.

파일 복호화하기

func decryptFile(filePath: String, password: String) {
    do {
        let encryptedData = try Data(contentsOf: URL(fileURLWithPath: filePath))
        let decryptedBytes = try AES(key: password.bytes, blockMode: .CBC, padding: .pkcs7).decrypt(encryptedData.bytes)
        let decryptedData = Data(decryptedBytes)
        let decryptedFilePath = filePath.replacingOccurrences(of: ".encrypted", with: "")
        try decryptedData.write(to: URL(fileURLWithPath: decryptedFilePath))
    } catch {
        print("Error decrypting file: \(error)")
    }
}

위의 코드는 암호화된 파일을 읽고, password를 사용하여 해당 파일을 AES 알고리즘으로 복호화한 다음 .encrypted 확장자를 제거한 파일로 저장합니다.

사용 예제

let filePath = "path/to/file.txt"
let password = "mysecretpassword"

encryptFile(filePath: filePath, password: password)

let encryptedFilePath = filePath + ".encrypted"
decryptFile(filePath: encryptedFilePath, password: password)

위의 예제에서는 filePath에 있는 파일을 암호화한 다음 복호화하는 과정을 보여주고 있습니다. password는 암호화 및 복호화에 사용되는 키입니다.

이제 암호화된 파일을 저장하고 필요에 따라 복호화할 수 있게 되었습니다. CryptoSwift를 사용하면 암호화된 데이터를 안전하게 관리할 수 있습니다.

참고자료