RSA 密钥对生成器

在浏览器中用 Web Crypto 生成 RSA 密钥对(2048、3072 或 4096 位)。可下载 PKCS#8/SPKI 或 PKCS#1 格式的 PEM 密钥,不会上传任何内容。

请妥善保管私钥:任何拿到私钥的人都能解密你的数据。请保存在密码管理器或加密文件中,切勿粘贴到不可信的网站。

密钥在浏览器中通过 Web Crypto API(crypto.subtle.generateKey)生成。公钥可以公开分享,用于加密或验签。

相关工具

查看全部

什么是 RSA 密钥生成器?

使用 Web Crypto API 在浏览器中创建新的 RSA 公钥/私钥对,并以可复制或下载的 PEM 文本显示两个密钥。可选择 2048、3072 或 4096 位,以及现代的 PKCS#8 + SPKI 格式或较旧的 PKCS#1 "RSA PRIVATE KEY" 格式。

如何使用 RSA 密钥生成器

  1. 选择密钥长度(2048 位是常见的最低要求,长期使用选 3072)。
  2. 选择密钥格式:PKCS#8 + SPKI(推荐)或 PKCS#1。
  3. 点击生成密钥对并稍等片刻(4096 位密钥需要更长时间)。
  4. 复制或下载 public.pem 和 private.pem,并妥善保管私钥。

示例

输入
Key size 2048 bits, format PKCS#8 + SPKI
输出
-----BEGIN PUBLIC KEY----- … (about 450 characters) and -----BEGIN PRIVATE KEY----- … (about 1700 characters)

密钥是随机的,因此每次运行都会得到不同的密钥对。

何时使用 RSA 密钥生成器

用于测试和开发密钥、演示、JWT RS256 实验,或配合本站的 RSA 工具加密数据。对于生产服务器、证书和 SSH,最好在将要使用它们的机器上生成密钥(openssl genpkey、ssh-keygen),这样私钥就不会经过浏览器。这些密钥没有口令保护。

RSA 密钥生成器 的工作原理

crypto.subtle.generateKey 使用浏览器的密码学安全随机数生成器,选取两个大小为模数一半的随机素数 p 和 q,设 n = p·q、公钥指数 e = 65537,私钥指数 d = e⁻¹ mod λ(n)。密钥以 DER 导出(公钥为 SPKI,私钥为 PKCS#8),再按每行 64 个字符做 Base64 封装成 PEM。对于 PKCS#1,同一个密钥会被重新编码为 RSAPublicKey / RSAPrivateKey。这些密钥可用于 OpenSSL、OpenSSH(转换后)、Java、.NET、Node.js 和 Web Crypto。

常见用例

  • 创建用于测试 RSA-OAEP 加密和解密的密钥对
  • 为本地 JWT 签名实验生成 RS256 密钥
  • 为单元测试生成 PEM 测试数据
  • 了解 PKCS#8、SPKI 和 PKCS#1 PEM 头部之间的区别

安全提示

私钥以明文显示,并且没有口令保护。请把它保存在安全的地方(密码管理器、加密磁盘),切勿提交到代码仓库。

常见问题

应该选择哪种密钥长度?

2048 位是目前可接受的最低要求,约相当于 112 位安全强度;对于 2030 年之后仍要使用的密钥,建议使用 3072 位(128 位安全强度)。4096 位更慢,而实际收益很小。

PKCS#8 还是 PKCS#1?

PKCS#8(BEGIN PRIVATE KEY)和 SPKI(BEGIN PUBLIC KEY)是现代的、与算法无关的格式,被 Web Crypto、Java 和 OpenSSL 3 使用。PKCS#1(BEGIN RSA PRIVATE KEY)是较旧的、仅限 RSA 的格式,一些遗留工具仍然需要它。

密钥会被发送到服务器吗?

不会。生成过程使用浏览器的 Web Crypto API,密钥在你关闭页面之前只存在于本页面中。

可以把这个密钥用于 SSH 吗?

用 ssh-keygen -i -m PKCS8 -f public.pem 转换公钥。对于真正的 SSH 访问,在本地运行 ssh-keygen 更安全。

探索更多分类