0

我运行一个游戏服务器,我有一个主服务器来处理从玩家(客户端)发送的所有数据包。

我想通过 AES 加密我的数据包,以便每个数据包都应该是唯一的(我认为我在这里需要 IV)并且该服务器应该只接受每个加密数据包一次,这样如果有人试图嗅探一个数据包,他就无法再次发送它。

我该怎么做呢?

PS i 代码服务器和 C++ 中的客户端

4

1 回答 1

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;
}
于 2014-03-09T15:45:03.843 回答