我正在尝试使用以下信息解密AES加密:
- 加密类型:AES 128
- 模式:CBC
- 填充:PKCS5(.net使用PKCS7)
- 密码(密钥):jayjay
- 加密参考:https://zenu.wordpress.com/2011/09/21/aes-128bit-cross-platform-java-and-c-encryption-compatibility/
提供示例:
加密字符串:vsiv + Tv0H9Tz0GHtf2S4KBXVV + 0L6Wr0xCWwA1QOPs8rnyRxNDDgH4ogo5Mm + wrzEW6uFD2kdFI2IcSTx + RMu 3817A7n1 / ZLCjqq6ZTXI3QZbWgr6AH3SOGM / lcnud4EROGUiZuTiWIBjxTy + Q / 8TA ==
解密后的字符串(预期):BadgeID ^ CustIDLookup ^名字^姓氏^标题^公司^地址1 ^地址 2 ^ ^市州^ ^邮编国家^ ^电话电子邮件
不幸的是,如果不知道它是如何被加密的,那么解码似乎并没有完全发挥作用。
我使用以下方法创建了一个NSString类别:
- (NSString *)decryptWithKey:(NSString *)key {
NSData *stringData = [self dataUsingEncoding:NSUTF8StringEncoding];
NSData *keyData = [key dataUsingEncoding:NSUTF8StringEncoding];
size_t decryptedDataLength = [stringData length] + kCCKeySizeAES128;
NSMutableData *decryptedData = [NSMutableData dataWithLength:kCCKeySizeAES128 + decryptedDataLength];
size_t numberOfBytes;
CCCryptorStatus status = CCCrypt(kCCDecrypt,
kCCAlgorithmAES128,
kCCOptionPKCS7Padding,
[keyData bytes],
kCCKeySizeAES128,
nil,
[stringData bytes], [stringData length],
decryptedData.mutableBytes, [decryptedData length],
&numberOfBytes);
if (status == kCCSuccess) {
return [decryptedData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
} else {
NSLog(@"Status: %d", status);
return @"";
}
}
我获得kCCSuccess状态,但字符串不符合预期。任何帮助将不胜感激。