0

UDP 受信からのメッセージの復号化に問題があります。

私のコード:

byte[] receiveData= new byte[1024];

DatagramPacket pakiet = new DatagramPacket(receiveData, receiveData.length);
udp.receive(pakiet);

String wiadomosc = new String(pakiet.getData());
publishProgress(wiadomosc);
String szyfr = main.preferences.getString("SZYFR_TCP", "");
if(!szyfr.equals("1"))
{
    enc = new Encryptor(kluczByte, getCode());
    Log.e("myApp", "jestem 2");
    Log.e("message = ","" + wiadomosc);

    wiadomosc = enc.decrypt(wiadomosc);
    publishProgress(wiadomosc);
}

ログで、変数wiadomoscにデータと次のような多くの悪い文字があることがわかりました。

バイト配列reciveDataには 1024 個の要素があります。受信メッセージが短いと思うので、1024 に要素を追加する必要があります。文字列からこれらの文字を削除するにはどうすればよいですか? 「破損したパッドブロック」例外が発生するため、この文字列を復号化できないためです。

4

2 に答える 2

1

を呼び出すと、バッファが返されるだけだと思いますpakiet.getData()pakiet.getLength()したがって、バッファ内の正確な量のデータを取得するために呼び出すことができます。正しいオフセットと長さで復号化関数を呼び出すと、より多くの成功を収めることができます。

于 2012-12-02T14:35:08.897 に答える
1

UDP ヘッダーには、UDP データの長さが含まれます。したがって、その長さを抽出するには、Java に何らかの API が必要です。長さはバイト単位です。したがってreceivedData、その長さで初期化します。

于 2012-12-02T14:41:43.903 に答える