Java 如何使用RSA加密加密http响应

Java 如何使用RSA加密加密http响应,java,http,encryption,rsa,Java,Http,Encryption,Rsa,我正在开发一个web服务,使用RSA加密对请求-响应进行加密。我已经与客户端共享了公钥,并且能够使用私钥解密传入的请求。现在我的问题是如何加密要返回给客户机的响应。我有两个选择: (1) 使用我的私钥对响应进行加密,客户端将使用已共享的公钥对其进行解密 (2) 要求客户端提供其公钥,并使用该公钥加密响应 请建议使用哪种策略加密响应?您不能使用私钥加密,因为公钥应该是公共密钥。使用私钥加密本质上是不安全的,编程API通常不允许使用私钥 所以(2)是唯一的选择:让客户机拥有公钥,让他们用私钥解密。然

我正在开发一个web服务,使用RSA加密对请求-响应进行加密。我已经与客户端共享了公钥,并且能够使用私钥解密传入的请求。现在我的问题是如何加密要返回给客户机的响应。我有两个选择:

(1) 使用我的私钥对响应进行加密,客户端将使用已共享的公钥对其进行解密

(2) 要求客户端提供其公钥,并使用该公钥加密响应


请建议使用哪种策略加密响应?

您不能使用私钥加密,因为公钥应该是公共密钥。使用私钥加密本质上是不安全的,编程API通常不允许使用私钥

所以(2)是唯一的选择:让客户机拥有公钥,让他们用私钥解密。然而,这并不是故事的全部:

  • 公钥需要被信任,您可能需要设置一个完整的PKI来信任密钥
  • 较大的消息无法使用RSA轻松加密,因此您可能需要混合加密(加密随机AES密钥并使用该密钥加密消息)
  • 填充oracle攻击是非常真实的,并且确实适用于RSA,因此仅执行RSA是非常危险的

  • 这就是为什么通常建议使用TLS(仅限)。TLS并不总是安全的,但它几乎总是比自制的方案更安全。

    您不能使用私钥加密,因为公钥应该是公开的。使用私钥加密本质上是不安全的,编程API通常不允许使用私钥

    所以(2)是唯一的选择:让客户机拥有公钥,让他们用私钥解密。然而,这并不是故事的全部:

  • 公钥需要被信任,您可能需要设置一个完整的PKI来信任密钥
  • 较大的消息无法使用RSA轻松加密,因此您可能需要混合加密(加密随机AES密钥并使用该密钥加密消息)
  • 填充oracle攻击是非常真实的,并且确实适用于RSA,因此仅执行RSA是非常危险的

  • 这就是为什么通常建议使用TLS(仅限)。TLS并不总是安全的,但它几乎总是比自制方案更安全。

    有一个简单的按钮,可以为您完成所有这一切,甚至更多。它被称为TLS/SSL。你所需要做的就是通过https运行你的服务。这是一种分配吗?正如@JamesReinstateMonicaPolk所说的,SSL/TLS用于相同的目的。为什么要重新发明轮子!但是SSL/TLS不是在使用对称加密方面有所不同吗?有一个简单的按钮可以为您完成所有这些以及更多功能。它被称为TLS/SSL。你所需要做的就是通过https运行你的服务。这是一种分配吗?正如@JamesReinstateMonicaPolk所说的,SSL/TLS用于相同的目的。为什么要重新发明轮子!但是SSL/TLS在使用对称加密方面不是有所不同吗?感谢您花时间回答这个问题。这有助于我更好地理解这个问题并得出结论。希望这也能对很多人有所帮助。谢谢你花时间回答这个问题。这有助于我更好地理解这个问题并得出结论。希望这对很多人也有帮助。