RSA 密钥对生成器

选择算法和密钥长度,然后生成密钥对。私钥以 PKCS#8 PEM 和 JWK 格式显示,公钥以 SPKI PEM 和 JWK 格式显示。每一项都可以分别复制或下载。

免费 在浏览器中运行 核对于2026年11月10日星期二

此工具在您的浏览器中运行。您输入的内容不会发送给我们。

使用方法

  1. 选择“算法”:加密请选 RSA-OAEP,签名请选其中一种签名算法。
  2. 选择“密钥长度”。2048位是通常的最低要求;4096位生成所需的时间更长。
  3. 按“生成密钥对”,然后复制或下载四个框中的内容。
  4. 将私钥保存在机密管理工具中,切勿将它粘贴到网站、聊天或他人可以读取的文件中。

密钥对包含什么

RSA 密钥对有一个公开部分(任何人都可以拥有)和一个私有部分(只有所有者保管)。私钥以 PKCS#8(RFC 5958)格式写出,公钥以 SubjectPublicKeyInfo(RFC 5280)格式写出。两者都包装在 PEM 中,即位于 BEGIN 和 END 行之间的 Base64 文本(RFC 7468)。JWK 格式(RFC 7517)则以 JSON 保存相同的数字。

modulus n = p x q(两个约为密钥长度一半的质数)
public exponent e = 65537 (0x010001)
private exponent d,满足 d x e = 1 modulo (p - 1) x (q - 1)

算法与密钥长度

RSA-OAEP 用于加密,RSA-PSS 和 RSASSA-PKCS1-v1_5用于签名。这里三者都使用 SHA-256。密钥长度即模数 n 的位数:2048位是目前通常的最低要求,3072和4096位适用于需要长期有效的密钥。密钥越长,使用速度越慢,但4096位密钥对的公钥仍然很小。

浏览器使用其自带的密码学库生成密钥对(Web Cryptography API 中的 crypto.subtle.generateKey)。页面不自行编写 RSA 代码。

密钥在哪些情况下安全,哪些情况下不安全

密钥不会离开此页面:它们不会被发送、保存或记录。风险来自页面本身:在此页面中运行的任何程序,以及浏览器中的任何扩展程序,都可能在密钥显示期间读取它;复制到剪贴板的内容或下载的文件,则会一直留在磁盘上,直到被删除。

对于用于保护资金、身份或生产系统的密钥,请在私钥无法被复制出来的环境中生成,例如硬件安全模块、密钥保管库,或您控制的服务器。

计算示例:2048位 RSA-OAEP 密钥对

选择 RSA-OAEP 和2048位,然后按“生成密钥对”,会得到一个 PKCS#8私钥,其 PEM 以 -----BEGIN PRIVATE KEY----- 开头;以及一个 SPKI 公钥,其 PEM 以 -----BEGIN PUBLIC KEY----- 开头。公钥的 JWK 中,kty 为 RSA,e 为 AQAB,即65537的 Base64url 编码。其 n 值长256字节,因为2048位正好是256字节。

常见问题

在此页面生成用于真实网站的密钥安全吗?

用于学习和测试,可以。用于保护资金、身份或正在运行的系统,则不可以:浏览器及其扩展程序在密钥显示期间都可能读取它。这类密钥应在私钥无法被复制出来的环境中生成。

为什么私钥采用 PKCS#8格式,而不是较旧的 RSA PRIVATE KEY 格式?

PKCS#8(RFC 5958)会在密钥内部注明算法,因此读取者能知道该密钥的用途。大多数库都支持它。如果您的库需要旧格式,可以用 openssl 等工具转换。

公开指数为什么是65537?

它是2的16次方加1,是一个只有两个位为1的小数。它让公钥运算很快,也是主流库所使用的值,因此页面对每个密钥都采用它。

应该选择2048、3072还是4096位?

2048位是目前通常的最低要求。若密钥需要在很多年里保持安全,请选择3072或4096位,但要接受更长的密钥会让签名或解密变慢。

为什么私钥比公钥长得多?

公钥只包含模数和公开指数。私钥还包含两个质数,以及用于加快解密的数值(RFC 8017,附录 A.1.2),因此私钥要长好几倍。

关闭页面后,页面会保留我的密钥吗?

不会。密钥只存在于打开的页面的内存中,页面不会在浏览器中保存任何内容,即使是本地存储也不会。关闭前请先复制或下载密钥。

资料来源

数据和文字最近核对于2026年11月10日星期二。

我们使用必要的 Cookie 来运行网站。经您同意后,Google 还会使用广告 Cookie 展示个性化广告。如果您拒绝,仍会看到广告,但广告不会个性化。