RSA

概述

参考:

RSA 生成的密钥对,私钥用来签名,公钥用来加密。

举个例子,公钥公开出去,加密密码,交给服务端,服务端可以使用私钥解密从中获取密码,加密后续传输的消息后,使用私钥签名;客户端使用公钥验证收到的消息是否是真实客户端的消息,验证成功后,使用密码解密。

  • 这个场景,需要如下几个东西
    • RSA 的公钥私钥
    • 用于加密密码的算法,比如 AES
    • 随机生成的 XX 位密码,比如 16 位字符串密钥
    • 想要发送的数据,称为 reqBody
    • 接收到的数据,称为 respBody
  • 首先客户端生成 XX 位的字符串作为密钥,使用公钥加密密码后,得到 key;同时使用密码通过 AES 的算法加密 reqBody。
    • 这样,就保证了数据的隐私性
  • key加密后的 reqBody 一起发送给服务端
  • 服务端使用私钥解密 key 后得到密钥,再使用密码通过 AES 的算法解密接收到的 reqBody
  • 服务端处理请求后,再次使用密码加密 respBody,之后使用私钥对 加密后的 respBody 进行签名
    • 这样,保证了数据的真实性
  • 签名后的已加密的 respBody 发送给客户端
  • 客户端使用公钥验证签名以确保数据是服务端发来的没有被拦截篡改,之后使用 key 解密 respBody 后得到真实的响应数据。

最后修改 March 25, 2025: clearup (feb59d93)