我正在尝试使用OpenSSL加密API在客户端和服务器之间建立双向加密方案。
我为服务器生成了一个RSA公钥/私钥对。我想使用EVP_Seal/Open
函数生成用于会话加密的对称密钥。客户端使用公钥加密对称密钥,并使用EVP_Seal
将其发送到服务器。然后,服务器使用EVP_Open
来解密消息...但是,我现在如何加密消息以将发回到客户端?
我实际上无法访问未加密的对称密钥,因此我无法调用EVP_EncryptInit
之类的内容。如何加密信息以发送回客户端?我的印象是我正在生成具有这些功能的双向对称密钥,但我无法弄清楚如何使用它。
我考虑发送第二个对称密钥,我只是自己生成(使用,比方说,RAND_bytes
)作为服务器然后可以解密的“消息”,但似乎我应该能够使用对称已生成的密钥而不是新密钥。
我还考虑使用EVP_Seal
的加密对称密钥输出作为我的实际对称密钥,并将 作为服务器用于加密的消息传递,但这似乎也很奇怪和不正确。