🗝️ 密钥对在你自己的浏览器里生成,用的是浏览器内置的 Web Crypto。私钥不会上传、不会被记录,刷新页面就消失。

🗝️ 生成参数

选「不可导出」时浏览器会拒绝导出私钥,安全性更高,但也拿不到 PEM。

📄 生成的密钥

算法 —
安全强度 —
生成耗时 —
公钥长度 —
🔓 公钥(SPKI PEM)
点上方「生成密钥对」后显示
🔒 私钥(PKCS#8 PEM)
点上方「生成密钥对」后显示
🔍 公钥指纹(SHA-256,冒号分隔)
—
🔒 私钥等同于你的身份:谁拿到私钥,谁就能冒充你解密或签名。请勿把私钥粘贴到聊天窗口、工单、网盘或任何网页里。测试用的密钥对可以随时重新生成。

📊 算法怎么选

「安全强度」是对称密钥的等效位数,越高越难破解。

算法用途安全强度密钥长度特点
RSA-OAEP加密2048→112 / 3072→128256 / 384 字节公钥兼容性最好,老系统都在用
RSA-PSS签名2048→112 / 3072→128同上带随机盐的签名,比 PKCS#1 v1.5 安全
ECDSA P-256签名128公钥仅 91 字节首选:短、快、强度够
ECDSA P-384签名192公钥 120 字节需要更高强度时选它
ECDSA P-521签名256公钥 158 字节最高强度,性能略慢
ECDH P-256密钥协商128公钥 91 字节TLS、端到端加密的协商环节
RSA 1024—80128 字节公钥已不安全,禁止使用

⚠️ 使用提示:① 本工具生成的密钥用于学习、测试、演示场景是合适的;用于生产系统、证书签发、资金相关业务时,请在受控环境(离线机 / HSM / KMS)中用专业工具生成;② 私钥一旦离开你的浏览器就不可控——复制、下载、粘贴任何一步都可能留下副本,请谨慎;③ 浏览器生成的密钥没有口令保护,PEM 文件是明文私钥,谁拿到文件谁就能用;④ RSA-4096 生成可能要几秒甚至十几秒,期间页面会卡住一下,属正常现象;⑤ 本工具不做证书签发(X.509)、不做密钥格式转换(OpenSSH / JWK)、不做签名验签操作。

🗝️

密钥对生成

加密工具 完全免费 🌙 支持黑夜模式 🔒 本地生成,不上传 📄 PEM 导出 🔍 公钥指纹

配 SSH、调 JWT、做接口签名、搭测试环境——这些场景的第一步都是「先有一对公私钥」。
过去你要装 OpenSSL 再敲一串记不住的命令;现在可以直接在浏览器里生成:
① 四种算法:RSA-OAEP(加密)、RSA-PSS(签名)、ECDSA(签名)、ECDH(密钥协商);
② 多种强度:RSA 2048 / 3072 / 4096,ECC P-256 / P-384 / P-521;
③ 标准格式:私钥导出 PKCS#8 PEM,公钥导出 SPKI PEM,这俩格式 OpenSSL、Java、Go、Node 都能直接读;
④ 公钥指纹:对公钥做 SHA-256,方便你核对「这把公钥是不是那把」;
⑤ 可选不可导出:勾选后浏览器会拒绝导出私钥,适合只想验证「能不能生成」的场景。
密钥在你自己的浏览器里生成,用的是浏览器内置的随机数发生器,私钥不上传、不记录,刷新就没了。

类别加密工具
算法RSA-OAEP / RSA-PSS / ECDSA / ECDH
导出格式PKCS#8 / SPKI PEM
运行环境需 HTTPS 或 localhost

核心特性

原生 Web Crypto
四种算法
PKCS#8 / SPKI PEM
公钥指纹
可设不可导出
下载 PEM 文件
生成耗时显示
不上传

关于这个工具

怎么实现:
① 生成:`crypto.subtle.generateKey()`。RSA 传 `{ modulusLength, publicExponent: 65537, hash }`,ECC 传 `{ namedCurve }`,第三个参数是「私钥是否可导出」;
② 导出:`exportKey('pkcs8', 私钥)` 拿到 DER 字节,`exportKey('spki', 公钥)` 同理,再包成 PEM(Base64 每 64 字符换行,加 `-----BEGIN …-----` 头尾);
③ 指纹:对公钥的 DER 字节做 `digest('SHA-256')`,输出冒号分隔的十六进制,等价于 `openssl pkey -pubin -outform DER | openssl dgst -sha256`;
④ 用途区分:RSA-OAEP 用于加解密(keyUsages `encrypt/decrypt`),RSA-PSS / ECDSA 用于签名(`sign/verify`),ECDH 用于密钥协商(`deriveBits/deriveKey`)——用途不能混用,一把 ECDSA 密钥拿去加密会被浏览器拒绝;
⑤ 安全强度:RSA-2048 ≈ 112 位,RSA-3072 ≈ 128 位,P-256 ≈ 128 位,P-384 ≈ 192 位,P-521 ≈ 256 位。ECC 用更短的密钥达到同等强度,所以现在新系统都优先选 ECC。
它不做:不做签名 / 验签 / 加解密操作(只生成),不做 X.509 证书,不做 JWK / OpenSSH 格式转换。

怎么用

  1. 第 1 步
    先确认用途:加密选 RSA-OAEP,签名选 ECDSA(推荐)或 RSA-PSS,协商密钥选 ECDH。
  2. 第 2 步
    点「🗝️ 生成密钥对」。RSA-4096 会慢一些,页面短暂无响应是正常的。
  3. 第 3 步
    公钥可以随便复制、发给别人;私钥只在必要的时候复制。
  4. 第 4 步
    要存文件就点「⬇️ 下载公钥 / 私钥」,得到 `.pem` 文件。
  5. 第 5 步
    核对身份时比对公钥指纹——两把公钥的指纹一样,才说明是同一对。

更新记录

  • v1.0 2026-09-21 工具正式上线:基于浏览器原生 Web Crypto(generateKey / exportKey)生成 RSA-OAEP(2048/3072/4096)、RSA-PSS(2048/3072)、ECDSA 与 ECDH(P-256/P-384/P-521)密钥对;私钥导出 PKCS#8 PEM、公钥导出 SPKI PEM(Base64 每 64 字符换行),附安全强度、生成耗时、公钥长度与 SHA-256 公钥指纹;支持复制、下载与「私钥不可导出」开关。非安全上下文给出明确引导。纯本地零依赖,适配黑夜模式。

常见问题

RSA 和 ECC 到底选哪个?
新项目一律优先 ECC(ECDSA / ECDH)。
· 同等安全强度下,ECC 密钥短得多(P-256 公钥 91 字节 vs RSA-3072 公钥 384 字节),传输和存储都省;
· ECC 生成和运算更快;
· 主流 TLS、JWT、SSH 都支持。
只有一种情况选 RSA:对端系统太老,只认 RSA。这时至少用 3072 位,2048 位是底线,1024 位已经作废。
生成的私钥能直接用吗?
格式上是标准 PKCS#8 PEM,OpenSSL、Java、Go、Node、Python 都能直接读。
但要注意两点:
① 它没有口令加密——文件是明文私钥,任何人拿到文件就能用。存到磁盘请立刻设置文件权限(`chmod 600`),或改用带口令的格式;
② 用于生产环境、证书、资金相关的场景,请在离线环境或 HSM / KMS 中生成,不要依赖浏览器页面。
「私钥不可导出」是什么意思?
这是 Web Crypto 提供的一个安全开关:
· 选「可导出」:`exportKey('pkcs8')` 能拿到私钥字节,才有 PEM 文本;
· 选「不可导出」:浏览器拒绝导出私钥,私钥只存在于浏览器内部,无法以任何形式取出。
后者安全性更高(恶意脚本也拿不走),代价是你拿不到 PEM。如果你只是想验证「这台设备能不能生成某算法」,选它就对了。
RSA-4096 为什么这么慢?
因为 RSA 密钥生成要找两个大素数:随机挑一个大数,再做素性测试,不匹配就重来。位数越大,素数越稀疏,尝试次数越多。
典型耗时:2048 位零点几秒,3072 位 1~3 秒,4096 位可能要 10 秒以上,手机更慢。
期间页面会短暂无响应(计算在主线程),这不是卡死,等一下就好。日常使用3072 位已经足够,没必要硬上 4096。
能生成 SSH 用的密钥吗?
不能直接生成 OpenSSH 那种 `ssh-ed25519 …` 单行格式。
Web Crypto 目前导出的是 PKCS#8 / SPKI,而 OpenSSH 用的是自己的封装格式;另外 Web Crypto 不支持 Ed25519(浏览器支持还不普及)。
如果你只是要一把 SSH 登录密钥,还是用系统自带的 `ssh-keygen` 最省事。
如果是做 JWT / JWS 之类的 Web 场景,本工具生成的 ECDSA P-256 完全够用。

💬 留言板 0

全部留言需审核通过后展示
💬

还没有留言,来抢沙发吧!

✍️ 说点什么
0 / 500
图形验证码