RSA 密钥对生成
用浏览器内置的 WebCrypto 生成 2048 / 3072 / 4096 位 RSA 密钥对,导出 PKCS#8 私钥与 SPKI 公钥的 PEM 文本,密钥不离开本机。
浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。
点击「生成密钥对」后在这里显示公钥与私钥
使用提示
- 私钥务必保密:任何拿到私钥的人都能解密或伪造签名,不要粘贴到聊天工具或在线编辑器里。
- 公钥可以公开分发,用于加密数据或验证签名。
- RSA-OAEP 用于加密/解密,RSASSA-PKCS1-v1_5 用于签名/验签;导出的 PEM 可以直接放进 .pem 文件或配置文件。
- 密钥在本机浏览器内生成,不会上传到任何服务器。
这个工具能做什么
- 在本机生成一对 RSA 密钥,用来自签 JWT、测试加密接口,或给内部服务配一对公私钥,不必把私钥交给任何在线生成器。
- 拿到的 PEM 可以直接存成 .pem 文件、写进服务配置,或喂给 Node 的 crypto.createPrivateKey——输出就是标准的 PKCS#8 私钥与 SPKI 公钥。
- 排查「对方要 RSA-OAEP 还是 RSASSA-PKCS1-v1_5」这类兼容问题,换个算法重新生成一对即可。
- 在离线机器或内网环境里准备密钥材料:浏览器打开就能生成,不需要额外装 openssl。
示例
输入
算法 RSA-OAEP,密钥长度 2048 位,摘要算法 SHA-256,点击「生成密钥对」
输出
-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA… (公钥 Base64 共 7 行,每行 64 字符) -----END PUBLIC KEY----- -----BEGIN PRIVATE KEY----- MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDE… (私钥 Base64 共 26 行,同样每行 64 字符) -----END PRIVATE KEY-----
密钥是随机的,每次生成的 Base64 都不一样,但 2048 位 RSA 的固定前缀不会变:公钥以 MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A 开头、共 7 行,私钥以 MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBK 开头、共 26 行,都是每行 64 字符、末尾带一个换行。
常见问题
生成的密钥会被上传吗?
不会。密钥由浏览器内置的 WebCrypto(crypto.subtle.generateKey)在本机生成,页面不发任何网络请求,断网也能用。唯一的泄露途径是你自己把私钥复制出去。
2048、3072、4096 位该选哪个?
默认 2048 位满足当前主流安全要求,兼容性也最好;3072 与 4096 位更抗未来算力,但生成要多等几秒到十几秒,签名验签也更慢。没有额外合规要求就用 2048。
RSA-OAEP 和 RSASSA-PKCS1-v1_5 有什么区别?
RSA-OAEP 是加密算法,生成的密钥只能用于加密和解密;RSASSA-PKCS1-v1_5 是签名算法,密钥只能用于签名和验签。WebCrypto 在生成时就把密钥用途固定下来,选错了另一端会直接报错,只能重新生成。
为什么提示「当前环境不支持 WebCrypto」?
只有 https 或 localhost 页面才会暴露 crypto.subtle,用 http 打开局域网 IP、或浏览器版本过旧都会缺少这个 API。换成 https 或本机访问即可。
私钥不小心关掉页面还能找回吗?
不能。密钥没有备份机制,刷新页面或点「清空」后就没了。生成后请立刻把私钥存进密钥库或加密文件,不要只留在浏览器里。
关键词:rsa密钥对key pairwebcryptopempkcs8spki公钥私钥非对称加密