java - 如何使用 RSA 加密对 http 响应进行加密

标签 java http encryption rsa

我正在开发一个 Web 服务,我使用 RSA 加密来加密请求响应。我已与客户端共享公钥,并且可以使用我的私钥解密传入的请求。现在我的问题是如何加密要返回给客户端的响应。我对此有两个选择:

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

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

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

最佳答案

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

所以(2)实际上是唯一的选择:拥有客户端公钥并让他们用私钥解密。但这还不是故事的全部:

  1. 公钥需要可信,并且您可能需要设置完整的 PKI 才能信任这些 key ;
  2. 较大的消息无法轻松使用 RSA 加密,因此您可能需要混合加密(加密随机 AES key 并用该 key 加密消息);
  3. 填充预言机攻击非常真实,并且确实适用于 RSA,因此仅执行 RSA 是相当危险的。

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

关于java - 如何使用 RSA 加密对 http 响应进行加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60039874/

相关文章:

java - reSTLet:在同一 Web 应用程序中使用服务器和客户端 reSTLet Jars

ruby-on-rails - 使用 WireShark 捕获 Rails API 请求/响应

Javascript 加密 SJCL GCM 无法解密我加密的内容

sql - 如何使用sql关键字 'like'查找加密数据

c - 使用按位运算符解密隐藏消息

java - 使用 JNativeHook 更新 gui?

java - 将数据导入二维公共(public)数组

java - Spring中无法findAll,出现空指针异常

javascript - 是否可以使用 javascript 记录 HTTP 请求客户端?

http.Client 拒绝使用 >unsupported protocol scheme ""< 即使已设置的请求