1

プログラムの流れ

送信者- 暗号化キーを byte[] として生成し、その値をユーザーに表示Base64.encodeToStringしてから、その byte[] (キー) を udp パケットとして受信者に送信します

受信者- UDP パケットを受信して​​キー (byte[]) を取得し、ユーザーからキーを文字列として取得し (ユーザーは送信者プログラムで表示された文字列を知っています)、受信したキー (byte[]) を使用して文字列に変換しますBase64.encodeToString

これが問題です。両方の文字列を比較すると、equalsfalseが返されます

logcatで両方の文字列を出力すると

出力は

12-05 15:39:32.047: V/userkey(2210): oIAfhtGnf+tBX8NBB5ONVQ==

12-05 15:39:32.047: V/reckey(2210): oIAfhtGnf+tBX8NBB5ONVQ==

ここで、両方の文字列が同じ文字シーケンスを持っていることがわかります

重要

私は多くのことを検索し、 について知るようになりcontentEqualsました。両方の文字列の文字とシーケンスを比較するだけで問題が解決することを期待して、これも試しましたが、これを機能させることができず、これらの文字列に対して false を返します。 ..

EditText でユーザーから文字列を取得します

txtDeKey.getText().toString()

およびバイト[]を文字列に変換します(両方を試しました)

Base64.encodeToString(key1, Base64.DEFAULT).toString()
Base64.encodeToString(key1, Base64.DEFAULT)
4

0 に答える 0