Encryption 在服务器和客户端之间共享RSA密钥

Encryption 在服务器和客户端之间共享RSA密钥,encryption,server,client,rsa,Encryption,Server,Client,Rsa,因此,我正在开发一个应用程序,其中客户端使用RSA java加密数据,并将其发送到服务器PHP,在那里必须进行解密! 所以问题是如何在客户端和服务器之间共享密钥? 只是为了获取信息,客户机使用GET方法发送加密数据,所以我不能将密钥与加密数据一起发送,因为在这种情况下,每个人都可以看到它并解密信息 有什么想法吗?唯一的方法是让客户端启动连接。您将在服务器上生成密钥对,并将公钥安全地发送到客户端。然后,客户端可以使用公钥加密对称会话密钥并将其发送到服务器。现在,服务器可以解密接收到的数据包并恢复会

因此,我正在开发一个应用程序,其中客户端使用RSA java加密数据,并将其发送到服务器PHP,在那里必须进行解密! 所以问题是如何在客户端和服务器之间共享密钥? 只是为了获取信息,客户机使用GET方法发送加密数据,所以我不能将密钥与加密数据一起发送,因为在这种情况下,每个人都可以看到它并解密信息
有什么想法吗?

唯一的方法是让客户端启动连接。您将在服务器上生成密钥对,并将公钥安全地发送到客户端。然后,客户端可以使用公钥加密对称会话密钥并将其发送到服务器。现在,服务器可以解密接收到的数据包并恢复会话密钥,例如AES

当然,问题是要安全地将公钥发送给客户端。如果您可以在客户端代码中嵌入公钥,那么这是可以的,但是如果不能,那么中间人攻击就很容易受到攻击

你真的应该使用已经建立的协议,比如TLS,而不是使用你自己的加密,因为有很多可能出错


上述协议过于简单,无法实现完美的前向保密。如果您想要这样做,那么您需要在此基础上运行密钥协议协议,例如使用Diffie Hellman密钥交换。

谢谢您的回答!这里的问题是,我不够好,不能单独做这件事,我需要了解它,所以如果我没有发现不那么复杂的事情,我会学习你让我尝试的内容,再次感谢你的回答。你可以把这当作一次学习经历,但是我强烈建议不要对任何类型的生产系统这样做,因为你是这个领域的新手。使用TLS和证书固定可能更好,应该有很多教程介绍如何使用自签名或CA签名的证书实现这一点。我真的很想了解itJava提供了您所需要的一切,但在PHP中,您将需要phpseclib。痛点不是请求,而是不同的编码。