2017-01-23 4 views
0

状況解読できませんでした:は(PBEWithMD5AndDESは)アンドロイドで(パッドブロックが壊れて)

  • 文字列をJava環境(javax.crypto.Cipher/PBEWithMD5AndDESは)で暗号化されつつある、base64でエンコードされた
  • 文字列がに転送されますAndroidの
  • 同じ暗号デコーダが使用されている、唯一異なるのbase64ライブラリ

=>私たちは

を取得し、復号化することができませんでした

java.lang.SecurityException:解読できませんでした:パッドブロックは、我々はすべての可能なbase64で問題をスキップするために、デコード()メソッド、および配列に渡され、バイト配列を比較分析中

が破損同一である。

同じJavaモジュールに渡された2つの同一のバイト配列は、異なる結果を返します(Javaではok、androidでは例外)。

暗号モジュールに渡されるパラメータは、両方のプラットフォームでハードコードされ、同一です。

違いはどこですか?

+0

暗号化と復号化に使用する実際のコードと、AndroidではなくデスクトップJavaで動作するテストベクトルを入力してください。 – Andy

+0

オファーに感謝します。さまざまなプロバイダが使用された理由がわかったようです。 –

答えて

1

最終的にJavaコードとAndroidコードの違いがわかりました。それはCipherコンポーネントが単なるコンテナであり、単独で何も実装していないことが判明しました。特定のアルゴリズムの実装はプロバイダによって行われ、各プラットフォームには異なるプロバイダのリストが設定されています。私たちのケースでは、Java用のSunの実装とAndroid用のBouncy Castleが実装されていました。それで、偶発的に暗号化アルゴリズムを使用していましたが、プロバイダごとに実装が異なっていました。

関連する問題