3

私はこれの上に髪を引っ張ってきました。iOSアプリケーションでCommonCryptoを使用してデータを暗号化し、それをWindowsサーバーに送信して復号化します。これは、iPhone 5(iOS 6)、iPad 3(iOS 6)、およびシミュレーター(Mac OS X 10.8.2)の両方のXcode(最新バージョン)開発環境で完全に機能します。

暗号化に使用している非常に単純なコードは次のとおりです。

    CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding,
                                      keyPtr, kCCKeySizeAES128, // oorspronkelijk 256
                                      keyPtr /* initialization vector (optional) */,
                                      [self bytes], dataLength, /* input */
                                      buffer, bufferSize, /* output */
                                      &numBytesEncrypted);

繰り返しますが、これはXcodeからデバッグしているときにうまく機能します。

しかし、IPA(アーカイブファイル、つまりAppleがApp Storeに対してレビューするもの)を作成し、暗号化されたデータをWindowsサーバーに送信すると、サーバーは「パディングが無効です」と報告します。2つの間にコードの違いはありません!

これら2つのビルドモードのCommonCryptoで何かが違うのではないかと思いますが、それがどうなるかわかりません。そして、AppleのオープンソースサイトからCommonCryptoライブラリを取得してビルドしようとしましたが、それをコードにコンパイルすることを目的としていましたが、正常にビルドできませんでした。

他の誰かがこの問題に遭遇しましたか?ここに欠けているコンパイラオプションはありますか?

* 編集 *

問題の原因となっているフラグを見つけました。「最適化レベル」を「最小/最速」、「最速」、「高速」、または「高速」に設定すると、失敗します。ただし、「なし」に設定すると機能します。したがって、最適化の何かが暗号化を破っています!

4

0 に答える 0