我正在用 C++ 为 Minecraft 游戏编写服务器。
客户端通过普通套接字向服务器发送初始握手包。然后服务器将 RSA 密钥发送回游戏,从那时起所有套接字通信都使用发送给客户端的 RSA 密钥进行 AES 加密。
我有一个想法,我可以通过在服务器将 RSA 密钥发送到客户端后直接将我的常规 boost::asio 套接字转换为 boost::asio ssl 套接字来避免实现 AES/RSA 并链接到服务器中的其他库。
如果已经创建了套接字,我该如何转换它?
我正在用 C++ 为 Minecraft 游戏编写服务器。
客户端通过普通套接字向服务器发送初始握手包。然后服务器将 RSA 密钥发送回游戏,从那时起所有套接字通信都使用发送给客户端的 RSA 密钥进行 AES 加密。
我有一个想法,我可以通过在服务器将 RSA 密钥发送到客户端后直接将我的常规 boost::asio 套接字转换为 boost::asio ssl 套接字来避免实现 AES/RSA 并链接到服务器中的其他库。
如果已经创建了套接字,我该如何转换它?
ssl::stream
是在 a 之上实现的tcp::socket
,可以通过next_layer
orlowest_layer
成员函数直接访问套接字。实际上,要使用ssl::stream
,您首先连接下划线套接字,然后调用ssl::stream::handshake
。tcp::socket
请注意,您可以在这两个步骤之间做任何您想做的事情,例如直接从中读取和写入。有关详细信息,请参阅此示例。