VOID __stdcall EncryptionPacket(DWORD *enbyte,int len,DWORD PacketKey)
{
int NextLen = len % 4,PacketLength = len / 4;
int i=0,j=0;
DWORD NextKey = 0,AddNum = 0;
BYTE *NewPacketAddr = (BYTE *)enbyte;
AddNum = PacketKey;
while (PacketLength--)
{
AddNum += PacketLength;
NextKey = Pack_Tabel[AddNum % 0x162F] + 0x2E6D23C1;
enbyte[i] = enbyte[i] ^ NextKey;
AddNum = NextKey;
i++;
}
j=i*4;
NextKey ^= Pack_Tabel[NextLen % 0x162F];
if (NextLen != 0)
{
while (NextLen--)
{
(BYTE)NewPacketAddr[j] = (BYTE)NewPacketAddr[j] ^ (BYTE)NextKey;
NextKey = NextKey >> 8;
j++;
}
}
}