Все данные при передаче по сети идут в LittleEndian.
Длина пакета вычисляется таким образом:
Код:
encryptData + header
Заголовок статичен, он имеет размер 2 байта.
В дату входит опкод и сама дата.
Проверка чексуммы
Начинаем собирать посредством побайтовой сборки - dword и дальнейшим захориванием нуль-числа.
Код:
long chksum = 0;
for (int i = 0; i < count; i += 4) {
check = raw[i] & 0xff;
check |= raw[i + 1] << 8 & 0xff00;
check |= raw[i + 2] << 0x10 & 0xff0000;
check |= raw[i + 3] << 0x18 & 0xff000000;
chksum ^= check;
}
Последние 4 байта делаем тоже самое, но без хора и далее сравниваем:
Запись чексуммы точно такая же, но конечно, в обратном порядке:
Свернуть ↑
Код:
long chksum = 0;
int count = size - 4;
long ecx;
int i;
for (i = offset; i < count; i += 4)
{
ecx = raw[i] & 0xff;
ecx |= raw[i + 1] << 8 & 0xff00;
ecx |= raw[i + 2] << 0x10 & 0xff0000;
ecx |= raw[i + 3] << 0x18 & 0xff000000;
chksum ^= ecx;
}
ecx = raw[i] & 0xff;
ecx |= raw[i + 1] << 8 & 0xff00;
ecx |= raw[i + 2] << 0x10 & 0xff0000;
ecx |= raw[i + 3] << 0x18 & 0xff000000;
raw[i] = (byte) (chksum & 0xff);
raw[i + 1] = (byte) (chksum >> 0x08 & 0xff);
raw[i + 2] = (byte) (chksum >> 0x10 & 0xff);
raw[i + 3] = (byte) (chksum >> 0x18 & 0xff);
Свернуть ↑Развернуть ↓
Я забыл упомянуть, что при статичном крипте (когда используется статичный ключ блоуфиша) - мы хорим все данные перед криптом блоуфиша. Перед данными, мы кладем хор-ключ длиной в 4 байта, а уже после, мы покрываем блоуфишем все это.
Добавлено через 3 минуты
Суффикс
Его нету ;D Если это пакет Init, то он означает окончание блоуфиш ключа.
Добавлено через 5 минут
Чексумма генерится для даты (опкод + дата)
Добавлено через 12 минут
Цитата:
Сообщение от Donatte
3. Шифрация. Люди пишут что шифруется весь пакет начиная с третьего байта. Собсбвенно, есть ли смысл выполнять шифрацию, если планируется общаться с сервером одним пакетом (отправил пакет с сайта и получил ответ с логина), не доходя до Init пакета?
|
Можно, почему нет? Правда для этого придется править сервер

Плюс вопрос в том, насколько передаваемые данные секретны.