RSA 密钥对生成器

加密

用 Web Crypto 生成 RSA 密钥对(PEM 格式),支持 1024/2048/4096 位强度,可分别导出公私钥。可分别导出私钥与公钥的 PEM 文本,便于写入文件或配置。位数越高越安全但运算越慢,2048 位适用于多数场景,4096 位适合长期密钥。可指定密钥位数并分别导出公钥与私钥文本。

就绪
公钥
—
私钥
—

关于 RSA 密钥对生成器

RSA 是最经典的非对称加密算法,一对密钥中公钥用于加密或验签、私钥用于解密或签名,广泛用于 HTTPS 证书、SSH、JWT 的 RS256 等场景。本工具用浏览器的 Web Crypto API 在本地生成 RSA 公私钥对,可选 2048/3072/4096 位长度,并以标准 PEM 格式(公钥 SPKI、私钥 PKCS#8)输出,方便直接粘贴进配置或代码。例如选择 2048 位即可生成 PEM 格式的私钥与公钥对,可用于本地签名、验签或配置 SSH 免密测试。密钥长度越长安全性越高,但签名与验签的开销也会随之增加,常规场景 2048 位已够用,敏感场景可选 4096 位;生成的私钥等同于身份凭证,请勿粘贴进聊天窗口或提交到版本库,测试完成后及时清理本地文件。

非对称密钥的核心价值在于「公开的那一半可以放心交出去」:用私钥签名,任何人都能用公钥验证;用公钥加密,只有持有私钥的人能解开。这种不对称性带来的好处是密钥分发不再需要安全信道,代价是计算比对称加密慢得多,因此实际系统里通常用它来协商或加密一个对称密钥,再由对称密钥处理数据。 生成原理是选取两个大素数并据此计算出一对相关的大整数,其中一个连同模数一起公开,另一个必须严格保密。密钥长度决定安全强度,当前实践建议从两千零四十八位起步,长期或高价值场景使用四千零九十六位;位数增加会显著提高生成耗时,且对签名速度的影响大于对验证速度的影响,这是选型时需要权衡的。 使用要点:生成私钥应在可信环境中进行,浏览器生成的密钥不会离开本机,但这同时也意味着一旦丢失无法找回,因此必须立即备份。私钥文件格式有若干种,常见的有传统格式与更新的通用格式,前者兼容性广但默认不加密,后者可携带更多参数;导出时应为私钥设置口令,且不要在同一个地方同时存放私钥与它的口令。公钥可以自由分发,但应通过可信渠道发布并定期与线上实际使用的密钥核对,避免被替换。 边界与限制:非对称密钥的用途有边界,它不用于加密大量数据,也不适合用来存储口令——口令应当使用带工作因子的哈希算法。密钥长度并不等同于安全强度上限,实现缺陷与随机源质量同样关键,在某些环境中随机数生成不可靠会让密钥可预测,因此密钥必须由可信的随机源生成。此外旧版算法家族已被证明不可继续使用,新建系统应选择当前推荐的填充方案与参数,并留意所用库的默认值是否已随版本更新。 数据与隐私:本工具生成的是真实可用的密钥材料,属于最高敏感度数据。生成与导出全程在浏览器内完成,不上传任何内容,因此可以断网使用;但更稳妥的做法是在专用的离线环境生成生产密钥,并立即按组织的密钥管理规定备份与登记。

实现原理

生成选取两个大素数并据此算出一对相关的大整数:一个连同模数一起公开,另一个必须保密。安全性由「由公钥与模数反推私钥等价于大整数分解」这一假设支撑,因此密钥长度直接决定强度;位数增加会显著提高生成耗时,且对签名速度的影响大于对验证速度的影响。旧版填充方案已被证明不可继续使用。

密钥长度与耗时
输入生成 4096 位密钥对
输出生成耗时为 2048 位的数倍;签名变慢而验签变化较小——因此长期密钥才值得用 4096 位

使用方法

  1. 打开「RSA 密钥对生成器」
  2. 输入待处理的内容并设置参数
  3. 根据需要调整输出选项
  4. 点击「生成」按钮,结果实时显示
  5. 复制或导出结果

使用场景

  • 生成测试密钥对 — 为本地开发的签名/验签流程快速产出一对 RSA PEM 密钥。
  • 配置 JWT RS256 — 生成私钥签发、公钥验证 JWT 所需的密钥对,调试鉴权服务。
  • 学习非对称加密 — 对照公钥加密、私钥解密的过程理解 RSA 的工作原理。
  • 准备 JWKS — 获得公钥后转换成 JWK 用于搭建 OIDC 的公钥端点。
  • 验证密钥格式 — 检查现有 PEM 是否为合法的 SPKI/PKCS#8 结构。

常见问题

该选 2048 还是 4096 位?

2048 位目前仍被认为安全且性能更好,是多数场景的默认值;对长期保密要求高的可选 3072/4096,但密钥越长签名验签越慢,需权衡。

SPKI 和 PKCS#8 是什么?

它们是密钥的编码格式。本工具公钥用 SPKI(对应 PEM 的 BEGIN PUBLIC KEY),私钥用 PKCS#8(BEGIN PRIVATE KEY),是现代库通用的标准格式。

RSA 能直接加密大文件吗?

不能。RSA 单次只能加密小于密钥长度的数据。实际做法是用 RSA 加密一个随机的 AES 密钥,再用 AES 加密大数据,即"混合加密"。

公钥和私钥能互换用途吗?

不能随意互换。公钥用于加密和验签,私钥用于解密和签名。公钥可公开分发,私钥必须严格保密,泄露即丧失全部安全性。

在浏览器生成生产密钥安全吗?

crypto.subtle 的随机性本身是可靠的,但浏览器环境可能存在扩展或脚本风险。关键生产密钥建议在隔离的服务器上生成,本工具更适合开发与测试。

私钥文件需要口令保护吗?

需要。不加口令的私钥文件一旦被复制即可直接使用,等于把身份交了出去;而加了口令后,即便文件泄露,攻击者还需要破解口令。同时要注意私钥与口令不能存放在同一处,否则保护形同虚设。导出时应确认所用格式支持口令保护,并验证在其他工具中确实要求输入口令。

生成密钥时页面卡住很久,是出错了吗?

不是。密钥长度越长,寻找大素数的计算量越大,四千零九十六位在普通设备上耗时明显长于两千零四十八位,浏览器端尤其如此。此时不要刷新页面,否则生成过程会被中断。若经常需要生成,建议在命令行环境完成并妥善保管,浏览器更适合用于学习与验证参数。

生成的 RSA 密钥对能直接用于 HTTPS 证书吗?

密钥对本身只是密钥材料,证书还需要 CSR → CA 签发流程。可以用这对密钥生成 CSR 提交给 CA;自签名也能用但浏览器会告警。密钥位数建议 2048 起,4096 更安全但签名与握手更慢。

广告