эт я понял...терь я мучаюсь с гейм сервером. а йменно с шифрацией.
так шифрую
C++ Код:
void World::Encrypt(char *data,int sz)
{
data[0]=data[0]^xoro[0];
for(int i=1;i<sz;i++)
data[i]=data[i]^xoro[i%16]^data[i-1];
*((long long *)xoro)+=sz;
}
так получаю ключ из первого пакета от ГС (в ПХ он назван KeyPacket)
C++ Код:
void World::PDCryptInit(char *data)
{
memcpy(xori,data+4,16);
memcpy(xoro,data+4,16);
// SPProtocolVersion();
crypt=1;
SPAuthLogin();
}
в результате первые 8 байт правильно закодированы, следующие 8 полное гонево, потом опять 8 правильно. что я делаю не так? да, смущает вторая часть XOR ключа, там почти все нули