0
다음 코드로 128 키를 사용하여 메시지의 암호를 해독하려고합니다. 이것은 문자열의 확장입니다.aes 128 메시지 암호 해독 - Swift, iOS
func aesDecrypt(key:String, iv:String, options:Int = kCCOptionPKCS7Padding) -> String? {
if let keyData = key.dataUsingEncoding(NSUTF8StringEncoding),
data = NSData(base64EncodedString: self, options: .IgnoreUnknownCharacters),
cryptData = NSMutableData(length: Int((data.length)) + kCCBlockSizeAES128) {
let keyLength = size_t(kCCKeySizeAES128)
let operation: CCOperation = UInt32(kCCDecrypt)
let algoritm: CCAlgorithm = UInt32(kCCAlgorithmAES128)
let options: CCOptions = UInt32(options)
var numBytesEncrypted :size_t = 0
let cryptStatus = CCCrypt(operation,
algoritm,
options,
keyData.bytes, keyLength,
nil,
data.bytes, data.length,
cryptData.mutableBytes, cryptData.length,
&numBytesEncrypted)
if UInt32(cryptStatus) == UInt32(kCCSuccess) {
cryptData.length = Int(numBytesEncrypted)
let unencryptedMessage = String(data: cryptData, encoding:NSUTF8StringEncoding)
return unencryptedMessage
}
else {
return nil
}
}
return nil
}
입력 벡터 (iv)에 대해 nil 값을 사용합니다. crypData가 존재하지만 올바르게 읽을 수 없으며 unencryptedMessage도 마찬가지입니다. 온라인 도구는 데이터가 잘못되었음을 알리지 만 백엔드 쪽에서는 정상적으로 작동합니다.
키 - 값과 메시지 - 값은 base64Url입니다.
사용법 : 롭 말했듯이, 주요 문제는 입력 데이터이었다 2.3
AES 암호화에 대한 표준 설정이나 형식이 없습니다. 암호화 프로그램이 메시지를 구성하는 방법을 정확하게 설명 할 수있는 경우가 아니라면 암호를 해독 할 수 없습니다. 암호화 코드가 있습니까? –
키는 Base64로 인코딩되어 있습니다 (최소한 "base64Url"의 의미라고 가정합니다). 하지만 당신은 그것을 utf-8로 해독하고 있습니다. 가능성이 더 큰 문제 일지 모르지만 그럴 가능성이 가장 큰 문제입니다. –
@zaph 입력 값이 정확하고 백엔드가 자바 라이브러리로 해독 할 수 있음을 의미합니다. ECB 모드가 아니라 CBC 모드입니다. –