プログラムの流れ
送信者- 暗号化キーを byte[] として生成し、その値をユーザーに表示Base64.encodeToString
してから、その byte[] (キー) を udp パケットとして受信者に送信します
受信者- UDP パケットを受信してキー (byte[]) を取得し、ユーザーからキーを文字列として取得し (ユーザーは送信者プログラムで表示された文字列を知っています)、受信したキー (byte[]) を使用して文字列に変換しますBase64.encodeToString
これが問題です。両方の文字列を比較すると、equals
falseが返されます
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)