'AES Decryption using CommonCrypto - some characters are missing
{
"order_id": 5,
"no": "19000038",
"id": 10,
"name": "John Doe"
}
I encrypt above data using online AES encryption website which is: https://www.devglan.com/online-tools/aes-encryption-decryption
using CBC mode, 256 Key size and Base64 output text format. I copied playground by @/backslash-f on this link: AES encryption in swift
and below is how I write to decrypt the encrypted data:
let stringData = Data(base64Encoded: stringValue, options: .ignoreUnknownCharacters)
do {
let aes = try AES(keyString: key)
let decryptedData: String = try aes.decrypt(stringData!)
print("String decrypted:\t\t\t\(decryptedData)")
}
catch {
print("Something went wrong: \(error)")
}
the data successfully decrypted but there are missing characters. Below is the decrypted data (as printed in the code):
String decrypted: ,
"order_no": "19000038",
"id": 10,
"name": "John Doe"
}
as you can see, the first curly bracket until the "order_id": 5 is missing. Do anyone knows why this happens and how to fix this?
Solution 1:[1]
Figured out the problem. It is padding problem. CommonCrypto set padding to pkcs7 by default and we cannot change it. Then I use CryptoSwift library and change the padding to noPadding, then it works like charms!
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Lynn |
