AES-шифрование на игровом сервере клиент / сервер

Я запускаю игровой сервер, у меня есть основной сервер, который обрабатывает все пакеты, отправленные игроками (клиентами).

Я хочу зашифровать свои пакеты через AES, чтобы каждый пакет был уникальным (я думаю, что мне нужен IV здесь), и чтобы этот сервер принимал каждый зашифрованный пакет только один раз, чтобы, если кто-то попытался прослушать пакет, он не мог отправить его снова.

Как мне это сделать?

P.S я код сервера и клиента в C ++

0

Решение

Вы могли бы использовать какой-то SSL API, такой как OpenSSL, но это может быть излишним в вашем сценарии, так как вам нужно будет использовать сертификаты и т. Д. Существует реализация Rijndael с открытым исходным кодом (алгоритм, который использует AES) реализация C ++ Вот.

Вот пример его использования:

void testEncryptBlock()
{
const int nCharacters = 16;
char szHex[33];
char *EncryptedData = new char[nCharacters + 1];
CRijndael rijndael;
int result = rijndael.MakeKey("abcdefghabcdefghabcdefghabcdefgh");

// Add some dummy data for the sake of the demo
EncryptedData = (char*)memset(EncryptedData, 255, nCharacters); // 0xfffff...

result = rijndael.EncryptBlock(EncryptedData);

... // Do something with the data

delete [] EncryptedData;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]