0
こんにちは私は文字列を暗号化し、この作品は良いですが、私はutf_8のために使用したい場合は、これは動作しません。どのようにutf-8の暗号化/復号化のAndroidで
http://www.androidsnippets.com/encrypt-decrypt-between-android-and-php.html
:私はこのチュートリアルを使用します。そして、私の主な活動のコードは次のとおりです。
パブリッククラスMainActivityは{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String value="سلام";
try {
MCrypt mcrypt = new MCrypt();
String encrypted = MCrypt.bytesToHex(mcrypt.encrypt(value));
Toast.makeText(this, ""+encrypted, Toast.LENGTH_SHORT).show();
String decrypted = new String(mcrypt.decrypt(encrypted));
Toast.makeText(this, ""+decrypted, Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.printStackTrace();
}
}
}
は私がこの記事How to Encrypt And decrypt UTF-8 in JAVA or Android?を読みますが、あなたは男
PHP + mcryptよりも愚かなことがあれば、暗号化に関してはAndroidの断片です。しかし、質問に戻る: 'mcrypt.decrypt(暗号化された)'の結果が 'mcrypt.encrypt(値)'の結果とバイト単位で一致するかどうかを調べることができますか? Array.compareとして何かが存在するか、または16進数としてエンコードされたバイト配列を比較できます。 CBCの使用は、クライアントとサーバー間の通信(つまり、トランスポートセキュリティに使用される場合)では安全ではありません。 –
@MaartenBodewesあなたは、CBCが交通安全のために安全ではないと言うのは誤解を招くかもしれないと思いませんか?もちろん、MACなしで変更することはできますが、CBC **は他の暗号システムで正しく使用すると安全です**。 –
@ルークパーク私はここにCBCしか見ません。私は平文のオラクル攻撃についてはわかりませんが、確かに追加対策なしに、メッセージの完全性/真正性を期待してはいけません。それ以外に静的なIV(変更する!)、他に何が間違っている可能性があるスペースで埋めている? –