跳到主要内容
加解密工具

RSA 非对称加解密工具

使用 RSA 公钥加密、私钥解密短文本;支持常见 PEM、JWK、X.509 公钥和旧系统兼容参数。

RSA 加解密区

密钥、明文和密文只在当前浏览器中处理,不会上传或保存。

高级设置 2048 位 · RSA-OAEP/SHA-256
RSA-OAEP 提供随机化填充,推荐优先使用 SHA-256。

RSA 仅适合短文本;较长文本请使用 RSA + AES 混合加解密工具

0 字符

生成或输入公钥后,可以加密短文本

0 字符 · 0 字节

Base64 密文结果

0 字符

什么时候使用

适合使用接收方 RSA 公钥加密一小段敏感文本,再由接收方私钥解密。RSA 有严格的单次明文长度上限,较长正文请使用 RSA + AES 混合加解密工具

快速使用

  1. 保持默认的 2048 位 + OAEP + SHA-256,生成密钥对或粘贴已有密钥。
  2. 加密时输入公钥和短文本;解密时输入配套私钥及 Base64 密文。
  3. 根据页面显示的 UTF-8 字节上限控制明文长度,并在离开页面前保存私钥。

工具说明

这个工具使用 RSA 公钥加密、私钥解密 UTF-8 短文本,支持以下配置:

  • 密钥长度:1024、2048、3072、4096 位。
  • 填充模式:OAEP、PKCS#1 v1.5。
  • OAEP 哈希:SHA-1、SHA-256、SHA-384、SHA-512。

默认选择 2048 位 + OAEP + SHA-256。密钥生成、导入、加密和解密都在当前浏览器中完成,不会上传或保存。

当前页面生成固定的 SPKI PEM 公钥和 PKCS#8 PEM 私钥;导入时额外兼容 PKCS#1、RSA JWK,以及包含 RSA 公钥的 X.509 PEM 证书。密文始终输出标准 Base64,不会自动携带填充方式或 OAEP 哈希。

如何使用

选择参数并生成密钥

选择密钥长度、填充和 OAEP 哈希后,点击“生成密钥对”:

  • 公钥使用 SPKI PEM,标记为 BEGIN PUBLIC KEY
  • 私钥使用 PKCS#8 PEM,标记为 BEGIN PRIVATE KEY
  • 密文使用标准 Base64。

生成格式保持固定,方便保存和跨系统传递;粘贴外部密钥时还支持更多输入格式。

同一份 RSA 密钥可以用于不同填充方式,但加密和解密时选择的填充及 OAEP 哈希必须一致。

公钥加密

输入或生成公钥后,工具会识别以下格式,并统一转换为 SPKI 后执行加密:

  • SPKI PEM:BEGIN PUBLIC KEY
  • PKCS#1 PEM:BEGIN RSA PUBLIC KEY
  • X.509 PEM 证书:BEGIN CERTIFICATE,提取其中的 RSA 公钥。
  • RSA JWK:至少包含 ktyne

页面会显示识别到的输入格式、真实模数长度,并根据当前填充动态显示最大 UTF-8 明文字节数。

密钥长度OAEP + SHA-1OAEP + SHA-256OAEP + SHA-384OAEP + SHA-512PKCS#1 v1.5
1024 位86 字节62 字节30 字节不支持117 字节
2048 位214 字节190 字节158 字节126 字节245 字节
3072 位342 字节318 字节286 字节254 字节373 字节
4096 位470 字节446 字节414 字节382 字节501 字节

页面显示和校验的是 UTF-8 字节数,不是 JavaScript 字符数。

私钥解密

输入配套私钥、标准 Base64 密文,并选择加密时使用的填充和 OAEP 哈希。私钥支持:

  • PKCS#8 PEM:BEGIN PRIVATE KEY
  • PKCS#1 PEM:BEGIN RSA PRIVATE KEY
  • RSA 私钥 JWK:除 ktyne 外,还必须包含 dpqdpdqqi

输入会先统一转换为 PKCS#8。参数、私钥或密文不匹配时,解密会失败。

填充方式

OAEP

OAEP 是默认推荐模式。OAEP 使用的摘要算法同时用于主哈希和 MGF1:

  • SHA-256:默认推荐,兼容性和安全性较均衡。
  • SHA-384、SHA-512:摘要更长,因此可直接加密的明文更短。
  • SHA-1:只用于兼容旧系统。

PKCS#1 v1.5

PKCS#1 v1.5 只用于对接仍要求 RSA/ECB/PKCS1Padding 的旧系统。它不具备 OAEP 的现代安全属性,不应作为新系统默认配置。

本工具不会提供不安全的 RSA NoPadding。

为什么只能处理短文本?

OAEP 最大明文长度按下面的公式计算:

模数长度 / 8 - 2 × 哈希字节数 - 2

PKCS#1 v1.5 最大明文长度为:

模数长度 / 8 - 11

RSA 不适合直接加密大量数据。实际系统通常用 AES 加密正文,再用 RSA 公钥加密 AES 密钥,这称为混合加密。

格式和实现范围

  • OAEP 和 RSA 密钥生成使用浏览器 Web Crypto。
  • PKCS#1 v1.5 使用 node-forge,只在当前浏览器中运行。
  • 生成公钥固定为 SPKI PEM,生成私钥固定为 PKCS#8 PEM。
  • 导入兼容 SPKI、PKCS#1、X.509 PEM 公钥和 RSA JWK,以及 PKCS#8、PKCS#1 PEM 私钥和 RSA JWK。
  • 密文格式为标准 Base64,不附带填充或哈希元数据。
  • X.509 只提取 RSA 公钥,不校验证书链、有效期或用途。
  • 不提供数字签名、证书生成、ECC、文件处理或混合加密封装。

本页面不会把密钥重新导出为其他容器格式;如需在 SPKI、PKCS#1、PKCS#8、JWK 和 Base64 DER 之间转换,请使用 RSA 密钥格式转换与解析工具

常见问题

为什么 1024 位没有 OAEP + SHA-512?

1024 位 RSA 模数只有 128 字节,扣除 SHA-512 OAEP 所需空间后无法容纳任何明文,因此页面不会提供这个组合。

为什么粘贴公钥后最大长度会变化?

工具会读取当前公钥的真实模数长度,并结合当前填充和 OAEP 哈希重新计算上限,不只依赖生成密钥时的选择。

为什么证书只能用于公钥加密?

X.509 证书只包含公钥和证书元数据,不包含私钥。本工具只提取其中的 RSA 公钥,也不会校验证书链或判断证书是否可信。

公钥和私钥可以互换使用吗?

不可以。本工具只支持公钥加密、私钥解密。数字签名是另一套用途和流程。

私钥会上传吗?

不会。私钥只保存在当前页面内存中,但仍不应在不可信设备上处理生产私钥。

刷新页面后还能找回密钥吗?

不能。工具不把密钥写入本地存储,请在离开页面前自行保存。