什么时候使用
适合使用接收方 RSA 公钥加密一小段敏感文本,再由接收方私钥解密。RSA 有严格的单次明文长度上限,较长正文请使用 RSA + AES 混合加解密工具。
快速使用
- 保持默认的 2048 位 + OAEP + SHA-256,生成密钥对或粘贴已有密钥。
- 加密时输入公钥和短文本;解密时输入配套私钥及 Base64 密文。
- 根据页面显示的 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:至少包含
kty、n、e。
页面会显示识别到的输入格式、真实模数长度,并根据当前填充动态显示最大 UTF-8 明文字节数。
| 密钥长度 | OAEP + SHA-1 | OAEP + SHA-256 | OAEP + SHA-384 | OAEP + SHA-512 | PKCS#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:除
kty、n、e外,还必须包含d、p、q、dp、dq、qi。
输入会先统一转换为 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 公钥,也不会校验证书链或判断证书是否可信。
公钥和私钥可以互换使用吗?
不可以。本工具只支持公钥加密、私钥解密。数字签名是另一套用途和流程。
私钥会上传吗?
不会。私钥只保存在当前页面内存中,但仍不应在不可信设备上处理生产私钥。
刷新页面后还能找回密钥吗?
不能。工具不把密钥写入本地存储,请在离开页面前自行保存。