AES128解码问题

时间:2014-11-25 16:31:21

标签: aes decode aescryptoserviceprovider

我有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 = 这是恢复的编码字符串

1 个答案:

答案 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应用程序和服务器进行加密)。