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