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 ビットとして生成されるバイナリ