0

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

4

1 回答 1

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:我个人使用的是https://github.com/RNCryptor/RNCryptor,它适用于我们的 AES 128 解密(像你一样,我也有一个 Android 应用程序和一个进行加密的服务器)。

于 2014-11-25T22:59:24.333 回答