RSA 密钥生成与加密/签名

在浏览器中生成 PEM 格式的 RSA 密钥对,并用 RSA-OAEP 和 RSA-PSS 对文本进行加密、解密、签名或验证。

正在加载工具…

RSA 密钥生成与加密/签名以 2048、3072 或 4096 位生成一个全新的 RSA 密钥对,得到可直接使用的 PEM 格式公钥和私钥,并立即投入使用。在加密(RSA-OAEP)与签名(RSA-PSS)之间切换,再选择正向(加密或签名)或反向(解密或验证)来处理你的文本。所有密钥和操作都通过浏览器原生的 Web Crypto API 在本地完成,任何密钥材料都不会上传或存储到服务器。

RSA 密钥生成与加密/签名 是什么?

这是一个免费的浏览器内 RSA 工具箱,把密钥对生成与实际的加密、签名结合在一起。点击「生成密钥对」即可按所选模数大小铸造一对新的公钥/私钥;密钥以 PEM 块形式显示,可直接复制到配置文件、脚本或其他工具中。「操作」控件用于选择 RSA-OAEP(公钥加密)或 RSA-PSS(数字签名,均使用 SHA-256),「方向」控件在正向与反向之间切换,于是你可以先加密再解密,或先签名再验证。开发者、学生和安全工程师用它来测试加密流程、学习非对称密钥的原理,或在不安装 OpenSSL 的情况下快速生成一对临时 PEM 密钥。由于依赖浏览器内置的 Web Crypto,结果符合标准,而你的私钥绝不离开页面。

如何使用 RSA 密钥生成与加密/签名

  1. 打开「设置」,选择密钥大小:2048、3072 或 4096 位。
  2. 选择「操作」:加密(RSA-OAEP)或签名(RSA-PSS)——这决定了你所生成密钥的算法。
  3. 点击「生成密钥对」;公钥和私钥以 PEM 形式显示,可用复制按钮复制。
  4. 将「方向」设置为 加密/签名(正向)或 解密/验证(反向)。
  5. 在「明文」字段输入消息;反向操作时,把 base64 密文或签名粘贴到第二个字段。
  6. 查看结果,它会随输入自动更新,并可复制。

示例

用 RSA-OAEP 加密一条短消息

输入

操作:加密,方向:加密,明文:hello world

输出

形如 kQf8...== 的 base64 密文,只有匹配的私钥才能解密。

往返:解密刚刚加密的内容

输入

操作:加密,方向:解密,密文:kQf8...==

输出

hello world

用 RSA-PSS 签名并验证

输入

操作:签名,方向:签名,消息:invoice #42

输出

一个 base64 签名;把方向切换为「验证」,粘贴回来,结果显示「签名有效」。

常见问题

有任何内容发送到服务器吗?
没有。密钥生成、加密、解密、签名和验证全部通过浏览器的 Web Crypto API 在本地运行。你的私钥和明文都保留在页面上,绝不会上传或存储,因此该工具可离线使用。
为什么不能用为签名生成的密钥来加密?
RSA-OAEP 和 RSA-PSS 密钥在创建时就绑定了各自的算法。如果切换了「操作」,请重新生成密钥对,使密钥与所选算法匹配。
RSA-OAEP 能加密多少文本?
RSA 只能加密很小的数据——大约是密钥大小减去填充(对 2048 位密钥约 190 字节)。对于更长的数据,实际系统会用对称密钥加密数据,再用 RSA 仅封装那个密钥。
密钥是什么格式?
公钥以 SPKI 导出,私钥以 PKCS#8 导出,均封装为标准 PEM(-----BEGIN PUBLIC KEY----- / -----BEGIN PRIVATE KEY-----),与 OpenSSL 和大多数库接受的格式相同。
使用哪种哈希和填充?
两种算法都使用 SHA-256。RSA-PSS 签名使用 32 字节盐值,RSA-OAEP 的掩码生成使用 SHA-256,符合常见默认设置。

相关工具