使用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位