我无法解密发送消息AES

时间:2012-12-02 14:02:51

标签: java android string encryption udp

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

2 个答案:

答案 0 :(得分:1)

我认为您只需在致电pakiet.getData()时获得缓冲区。因此,您只需调用pakiet.getLength()即可获得缓冲区中的确切数据量。如果使用正确的偏移量和长度调用decrypt函数,则应该取得更大的成功。

答案 1 :(得分:1)

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