RSA 密钥对生成器
本地生成 RSA 公私钥对,支持 PEM / JWK / OpenSSH 与 SHA-256 指纹。
隐私安全:所有处理均在您的浏览器本地完成,数据绝不上传私钥请妥善保管
密钥完全在你的浏览器本地生成,本工具不会上传、不会保存、不写入任何 Cookie 或本地存储。生成后请立即下载并妥善保管私钥:私钥一旦泄露,对应的加密与签名都不再安全;私钥一旦丢失,将无法恢复。
生成参数
密钥概览
指纹为公钥 SPKI DER 的 SHA-256 摘要(冒号分隔大写十六进制),可用 ssh-keygen -l -f public.pem 或 OpenSSL 复核。
公钥 PEM(SPKI)
私钥 PEM(PKCS#8)
私钥默认隐藏,点击「显示私钥」查看完整内容。
JWK(JSON Web Key)
公钥指纹(SHA-256)
OpenSSH 公钥(ssh-rsa)
可直接粘贴到 GitHub / GitLab 的 SSH Keys 或服务器的 ~/.ssh/authorized_keys。
下载
ZIP 内含 public.pem 与 private.pem 两个文件,采用无压缩存储,兼容各类解压工具。
工作原理
- 1选择密钥长度(2048 / 3072 / 4096 位)与密钥用途(加密 RSA-OAEP、签名 RSA-PSS 或 RSASSA-PKCS1-v1_5)。
- 2点击「生成密钥对」,浏览器调用 WebCrypto 的 crypto.subtle.generateKey 在本机生成随机密钥对,全程不联网。
- 3生成完成后导出多种格式:公钥为 PEM(SPKI)与 OpenSSH,私钥为 PEM(PKCS#8),同时给出完整的 JWK 结构。
- 4工具对公钥 DER 计算 SHA-256 指纹,可用于核对密钥是否一致;私钥默认掩码,需要时点击「显示」查看。
- 5点击复制或下载保存:可分别下载 public.pem / private.pem,也可打包为包含两个文件的 .zip。
常见问题
生成的密钥安全吗?会不会被上传?
安全。密钥由浏览器内置的 WebCrypto(crypto.subtle.generateKey)在本地生成,随机数来自操作系统熵池;页面不发起任何网络请求,私钥不会离开你的设备,断网也能正常使用。
为什么必须通过 HTTPS 或 localhost 打开才能生成?
WebCrypto 属于安全上下文(Secure Context)能力,浏览器只在 HTTPS 或 localhost 下暴露 crypto.subtle。若通过 http:// 访问普通域名,工具会给出提示并禁用生成按钮,此时请改用 https 地址或在本机 localhost 下打开。
2048、3072、4096 位该怎么选?
2048 位是目前兼容性最好、性能最高的选择,能满足绝大多数场景;3072 位安全强度约等于 128 位对称密钥,是中长期推荐;4096 位安全性最高但生成需要数秒、加解密也更慢,仅在合规要求时选用。
三种用途有什么区别?
RSA-OAEP 用于加密小段数据或封装对称密钥,填充更安全,也是 JWT 的 RSA-OAEP 算法;RSA-PSS 是概率性填充签名,安全性最好,对应 JWT 的 PS256/384/512;RSASSA-PKCS1-v1_5 是确定性填充签名,兼容性最广,对应 JWT 的 RS256/384/512 与大量历史系统。同一条密钥只能按生成时的用途使用。
PEM 与 JWK、OpenSSH 格式有什么区别?
PEM 是 OpenSSL / ssh-keygen 等工具通用的 Base64 文本格式,公钥用 SPKI、私钥用 PKCS#8 封装;JWK 是 JSON 结构,常用于 Web 与 JWT 场景;OpenSSH(ssh-rsa AAAA...)是 ssh 与 GitHub、GitLab 添加公钥时使用的单行格式。三者内容等价,只是编码方式不同。
指纹有什么用?
指纹是公钥 DER 编码的 SHA-256 摘要(冒号分隔大写十六进制),用于快速核对两处公钥是否完全一致。你可以用 ssh-keygen -l -f public.pem 查看同样的指纹,或与服务器、证书中的指纹比对。