0
我試圖用128密鑰解密消息與下面的代碼。這是字符串的擴展名:aes 128消息解密 - 斯威夫特,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),我使用零值。 有crypData存在,但我不能正確讀取此,unencryptedMessage也是零。在線工具通知數據不正確,但是在後端工作正常。
鍵值和消息值是base64Url。
用法:
let decryptedMessage = message.aesDecrypt(keyTodecrypt, iv: nil)
雨燕2.3
AES加密沒有標準設置或格式。除非您可以準確描述加密器如何構建消息,否則無法對其進行解密。你有密碼嗎? –
您注意到密鑰是Base64編碼的(至少我假設這就是「base64Url」的含義)。但是你將它解碼爲utf-8。這可能是你的主要問題,儘管肯定會有更多。 –
@zaph我的意思是說輸入值是正確的,後端能夠用java庫解密它。這是ECB模式,而不是CBC。 –