我有AES128加密的网络服务 我使用AFHTTPRequestOperationManager并收到良好的响应(响应是加密的字符串) 当我尝试写字符串时,我看起来错误的回答 这是我的代码:
NSString *string = [[NSString alloc]initWithData:response encoding:NSUTF8StringEncoding];
NSLog(@"%@",string);
NSString *decodedString = [AES128Util AES128Decrypt:string key:Key];
NSLog(@"%@",decodedString);
关键是好的因为android工作正常 在第一个NSLog中,我读取了正确编码的响应 在第二个NSLog中,我读取了NULL字符串 感谢
编辑: LR1JZEOE8MgbEgyZtbqSAbO5ZL5wYBCpLX0KE4PynsFZiRBJe3lvRRr0CPbf0ufuSga8dG5j6IeDBvbn1iNeLUb7cYIb + caSXZw7t8TgrYA = 这是恢复的编码字符串
答案 0 :(得分:0)
加密可能有很多问题,而且有点难以调试(或者我应该说它有二进制行为正在运行或失败......)
我首先非常确定我的钥匙是好的。
之后,您可以查看AES128Util代码https://github.com/GreenWangcl/AES128-for-iOS/blob/master/ASE128Demo/ASE128/AES128Util.m
编码似乎很好,否则我会建议尝试使用Latin1或其他。
因此,如果您在Android上有一个有效的实现,那么AES128Util中应该是一个有趣的行:
CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt,
kCCAlgorithmAES128,
kCCOptionPKCS7Padding,
keyPtr,
kCCBlockSizeAES128,
NULL,
[data bytes],
dataLength,
buffer,
bufferSize,
&numBytesCrypted);
检查Android实现中的填充选项,可能不是PKCS7。
如果是,Android中的参数应该几乎相同,您可以尝试评估不同的内容。
Ps:personnaly我正在使用https://github.com/RNCryptor/RNCryptor,它可以正常使用我们的AES 128解密(就像你我还有一个Android应用程序和服务器进行加密)。