使用 CCCrypt 解密会在 iOS (5,6) 和 MacOS 10.7 上返回不同的结果。在不同平台/架构中运行的相同代码会产生具有相同输入的不同输出。为什么?以及如何解决?
我已经调试了一切。在 Mac 或 iPhone 上运行的所有变量共享相同的值。它们的分叉点是:
ccStatus = CCCrypt(kCCDecrypt, //decrypt
kCCAlgorithmAES128, //AES128
0, // mode - no Padding
rawAESKey, // simmetric key
kCCKeySizeAES128, //key size
iv,
dataIn, dataInBytesSize, //input
dataOut, dataOutBytesSize, //output
&clearTextSize);
此时,dataOut
根据它是在 mac 中运行还是在 iPhone 中运行,具有不同的值。ccStatus
在这两种情况下都返回成功。
注意:Xcode 版本 4.6.2 (4H1003) iOS SDK 5,6 - 生成为 32 位的二进制 MacOS SDK 10.7 - 生成为 64 位的二进制