3

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

4

0 に答える 0