我运行一个游戏服务器,我有一个主服务器来处理从玩家(客户端)发送的所有数据包。
我想通过 AES 加密我的数据包,以便每个数据包都应该是唯一的(我认为我在这里需要 IV)并且该服务器应该只接受每个加密数据包一次,这样如果有人试图嗅探一个数据包,他就无法再次发送它。
我该怎么做呢?
PS i 代码服务器和 C++ 中的客户端
我运行一个游戏服务器,我有一个主服务器来处理从玩家(客户端)发送的所有数据包。
我想通过 AES 加密我的数据包,以便每个数据包都应该是唯一的(我认为我在这里需要 IV)并且该服务器应该只接受每个加密数据包一次,这样如果有人试图嗅探一个数据包,他就无法再次发送它。
我该怎么做呢?
PS i 代码服务器和 C++ 中的客户端
您可以使用某种 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;
}