0
这是参照sipdroid data encrypt failed 我尝试使用XOR操作而不是反向字节代码来发送数据包并在SipdroidSocket.class中接收数据包。 我经历了同样的问题(噪音太大) 请指引我在加密和后期reply.I我张贴我试过的代码片段中SipdroidSocket.class解密包加密开放源代码VoIP Android
对不起。请参阅原始RtpSocket.java和SipdroidSocket.java类以获取完整视图。我只是把这些片段放在这里。
在RtpSocket.java中,我使用了一个静态值并收集了数据包的头部长度。然后在SipdroidSocket.java使用该头长度,以去除与所述有效载荷报头部分之前的调整: 在SipdroidSocket.java,下面编辑在发送中进行和接收功能:
public void receive(DatagramPacket pack) throws IOException {
if (loaded) {
impl.receive(pack);
byte[] b = pack.getData(); // fetch data from receiver
int len = RtpSocket.header;
pack.setData(do_something(b, len)); // do the XORing to retrieve
// original data
} else {
super.receive(pack);
byte[] b = pack.getData();
int len = RtpSocket.header;
pack.setData(do_something(b, len));
}
}
public void send(DatagramPacket pack) throws IOException {
byte[] b = pack.getData(); // fetch original data
int len = RtpSocket.header;
pack.setData(do_something(b, len)); // replace with tweaked data
if (loaded)
impl.send(pack);
else
super.send(pack);
}
private byte[] do_something(byte[] b, int len) {
// TODO Auto-generated method stub
int new_buff_len = b.length - len;
byte[] new_buff = new byte[new_buff_len];
int i = 0;
for (i = len; i < b.length; i++) // separating header values
{
new_buff[i] = (byte) (b[i]^0x43); // XORing original packet
// payload before sending and
// after receiving to get
// original data on both sides
}
return new_buff;
}
请,尝试和请给我建议。
我们可以看到你的代码吗?你已经尝试过了吗? – Martze