服務端用JAVA代碼解密,客戶端delphi利用IdMappedPortTCP轉發的時候加密
已知服務端JAVA代碼:
public byte[] dec() {
int xorByte = 88;
int hiByte = this._in.read();//從封包中獲取封包長度高位元組
int loByte = this._in.read();//從封包中獲取封包長度低位元組
hiByte ^= xorByte;//用異或解密
loByte ^= xorByte;//用異或解密
final int dataLength = ((loByte << 8) + hiByte) - 2;//得到真實長度
final byte data[] = new byte[dataLength];
int readSize = 0;
for (int i = 0; (i != -1) && (readSize < dataLength); readSize += i) {//獲取剩余封包
i = this._in.read(data, readSize, dataLength - readSize);
}
for(int i = 0; i < dataLength; i++) {
data[i]=(byte)(data[i] ^ _client._xorByte);
}
return data;
}
這段代碼很簡單,就是對封包用異或88來解密。
現在客戶端發送的是明文封包,我需要利用delphi的IdMappedPortTCP中的OnExecute事件中對明文封包加密,然后再發送到服務端,請求高手貼上delphi中用異或加密的代碼。
uj5u.com熱心網友回復:
資料轉成byte陣列,然后用xor異或加密,我就不研究你的java代碼了,你自己改吧uj5u.com熱心網友回復:
可是我用異或加密后,服務端解密后資料不對呢。uj5u.com熱心網友回復:
解密密鑰是byte(88),解密的也肯定是byte(88)了。仔細看了一下你的演算法,只有包長度的密鑰是byte(88),其他資料的密鑰是_client._xorByte吧?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/104510.html
標籤:網絡通信/分布式開發
