我在解密来自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。如何从字符串中删除这些字符?因为我收到“损坏的填充块”异常,所以无法解密此字符串。

最佳答案

UDP标头包含UDP数据的长度。因此,java中必须有一些API可以提取该长度。长度以字节为单位。因此,请以该长度初始化receivedData

09-07 09:29