아이폰
IOS Swift AES(128, 192, 256) 암복호화
SourceTree
2021. 11. 18. 19:29
반응형
AES 암복호화
- CryptoSwift 라이브러리 Pod 추가
- 추가 : pod 'CryptoSwift', '~> 1.3.8'
- 설치 : pod install
- 링크 : https://github.com/krzyzanowskim/CryptoSwift
- key값의 길이에 따라 AES128, AES192, AES256 으로 구분됨
- AES128 : 키값 16bytes
- AES192 : 키값 24bytes
- AES256 : 키값 32bytes
예제 코드(AES256)
import Foundation
import CryptoSwift
//라이브러리 : https://github.com/krzyzanowskim/CryptoSwift
//pod 'CryptoSwift', '~> 1.3.8'
class AES256Util {
//키값 32바이트: AES256(24bytes: AES192, 16bytes: AES128)
private static let SECRET_KEY = "01234567890123450123456789012345"
private static let IV = "0123456789012345"
static func encrypt(string: String) -> String {
guard !string.isEmpty else { return "" }
return try! getAESObject().encrypt(string.bytes).toBase64() ?? ""
}
static func decrypt(encoded: String) -> String {
let datas = Data(base64Encoded: encoded)
guard datas != nil else {
return ""
}
let bytes = datas!.bytes
let decode = try! getAESObject().decrypt(bytes)
return String(bytes: decode, encoding: .utf8) ?? ""
}
private static func getAESObject() -> AES{
let keyDecodes : Array<UInt8> = Array(SECRET_KEY.utf8)
let ivDecodes : Array<UInt8> = Array(IV.utf8)
let aesObject = try! AES(key: keyDecodes, blockMode: CBC(iv: ivDecodes), padding: .pkcs5)
return aesObject
}
}
반응형