我在解密来自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
。