RSA 加密解密怎么用?完整使用教程与常见问题

RSA 加密解密是什么

RSA 是一种非对称加密算法,它的核心特点是使用一对密钥:公钥和私钥。公钥可以公开给任何人,用来加密数据;私钥由持有者自己保管,用来解密数据。也就是说,别人用你的公钥加密一段内容后,只有你手里的私钥才能把它还原成明文,中间即使有人截获了密文,没有私钥也无法读出内容。RSA 的安全性建立在“大整数分解困难”这一数学问题之上,常见的密钥长度有 1024、2048、4096 位,位数越长越难破解,但加解密速度也会变慢。这个在线工具把密钥生成、公钥加密、私钥解密三个环节整合在一个页面里,方便理解 RSA 的完整流程,也可以用来处理一些格式转换和小数据量的加解密验证。需要说明的是,它运行在浏览器端,仅适合教学演示和日常测试,不能用于生产环境。

RSA 加密解密怎么用

  1. 生成或准备密钥。如果还没有密钥对,可以在工具中选择密钥长度(如 2048 位)并生成一对新的公钥和私钥;如果已有密钥,直接把 PEM 格式的公钥、私钥粘贴到对应输入框。工具同时支持 PEM 格式和裸模数/指数格式,后者适合从其他系统复制出来的纯数值密钥。
  2. 填写公钥。要进行加密时,把公钥内容放入公钥输入区域。注意公钥可以是完整的 -----BEGIN PUBLIC KEY----- 块,也可以是模数与指数分开填写的形式,二者选其一,不要混用。
  3. 输入明文并加密。在明文输入框里填写需要加密的内容,选择加密模式和填充方式(常见为 PKCS#1 v1.5 或 OAEP),执行加密后得到 Base64 或十六进制表示的密文。密文长度会随密钥长度变化,2048 位密钥一次能加密的明文长度有限。
  4. 用私钥解密。把上一步得到的密文粘贴到密文输入框,填入对应的私钥,选择与加密时相同的填充方式,执行解密即可还原出原始明文。填充方式不一致会导致解密失败。
  5. 核对结果。解密完成后,将得到的明文与加密前的内容逐字对比,确认没有缺失或多出字符。如果使用 OAEP 填充,还要确认哈希算法(如 SHA-256)在加解密两端保持一致。

常见使用场景

最典型的场景是理解非对称加密的工作原理。很多开发者第一次接触 RSA 时,对“公钥加密、私钥解密”和“私钥签名、公钥验签”这两组方向容易混淆,通过手动生成密钥、加密一段短文本再解开,可以直观地建立印象。

  • 生成测试用的密钥对,用于本地开发环境中调试接口的加解密逻辑。
  • 把其他系统导出的 PEM 密钥转换成裸模数/指数形式,或反向转换,便于跨平台复制。
  • 验证某段密文是否能用指定私钥解开,排查密钥不匹配、填充方式不一致等问题。
  • 在教学中演示密钥长度对密文长度的影响,对比 1024 位与 2048 位密钥的输出差异。

此外,在处理第三方支付、开放平台接口对接时,对方常常提供一段公钥用于加密请求参数,这时可以先用工具确认公钥格式是否正确、能否正常加密出密文,再去写业务代码,减少排查成本。

使用注意事项

  • 不要用于生产环境。浏览器端实现的加解密过程运行在本地页面中,密钥和明文会出现在当前设备的内存里,缺乏服务端的安全防护,也不能替代专业的加密库或硬件加密设备。
  • 不要在不可信设备上粘贴真实私钥。私钥一旦泄露,用对应公钥加密的所有数据都失去保护。正式项目中的私钥应妥善保管,避免通过网页工具处理。
  • 注意明文长度限制。RSA 加密的数据量受密钥长度和填充方式限制,2048 位密钥配合 PKCS#1 填充通常只能加密两百字节左右,较长的内容应先用对称加密处理,再用 RSA 加密对称密钥。
  • 填充方式与哈希算法要一致。加密和解密必须使用相同的填充方案,OAEP 模式下的哈希算法也要对应,否则会报解密错误。

常见问题

公钥加密后,为什么换一把私钥就解不开?

因为 RSA 的公钥和私钥是成对生成的,数学上互相对应。公钥由模数和公开指数组成,私钥包含对应的私有指数。只有配对的私钥才能完成解密运算,其他私钥在数学上无法还原出明文,这也是非对称加密安全性的来源。

PEM 格式和裸模数/指数格式有什么区别?

PEM 格式是把密钥数据按 ASN.1 结构编码后再做 Base64 处理,并加上 -----BEGIN ...----- 头尾标记,便于阅读和传输;裸模数/指数格式则只给出大整数的数值,通常用于某些接口或语言中直接传参。两种格式描述的是同一把密钥,工具支持互为转换。

解密时报错“填充错误”或返回乱码怎么办?

常见原因有三个:一是加密和解密使用了不同的填充方式;二是密文在复制过程中丢失或增加了字符,导致 Base64 解码异常;三是密钥并不配对。建议逐项检查填充设置、重新复制完整密文,并确认公私钥来自同一次生成。