企评社

RSA 密钥对生成

2048 / 3072 / 4096 位 · SPKI 公钥 + PKCS#8 私钥 · 附 JWK 与模数指纹

只在你浏览器里生成,私钥不上传、不落盘,刷新即消失

为什么私钥可以"只在你浏览器里"

密钥生成是纯数学运算。RSA 密钥对的生成只需要随机大数与模幂运算,这些运算现代浏览器的 Web Crypto 接口(背后常是操作系统/硬件的加密实现)都能直接完成。生成 2048 位密钥通常不到一秒,3072 / 4096 位也就多等几百毫秒——根本不需要把任何东西交给服务器。这也意味着:你的私钥从头到尾没有离开过这台设备,不存在"被服务器留存"的可能。

SPKI 与 PKCS#8 是两种标准容器。公钥按 SPKI(Subject Public Key Info)编码、私钥按 PKCS#8 编码,外面都包上 PEM 的 base64 与 BEGIN/END 头。这是目前最通用的两种格式:Nginx 的证书链、JWT 的 RS256 签名、OpenSSL 命令行都直接认。老式的 PKCS#1 私钥(BEGIN RSA PRIVATE KEY)本页不输出,需要时用 openssl pkey 转换即可。

模数指纹用来核对"是不是同一把公钥"。两把公钥是否相同,直接比文本容易看花眼;把公钥的模数(n)做 SHA-256 得到的短指纹则稳定可比。你在不同工具里生成或导入同一把公钥时,指纹一致就说明是同一条。

常见问题

生成的密钥对能直接用吗?

能。用浏览器内置的 Web Crypto(RSASSA-PKCS1-v1_5 + SHA-256)生成,公钥是 SPKI、私钥是 PKCS#8,都是标准 PEM 文本,可直接用于 Nginx、JWT 签名、OpenSSL 等场景;拿到后可以用 openssl pkey 复核。

私钥会上传吗?

不会。生成、导出、展示全在你的浏览器里完成,私钥只存在于当前页面的内存中,不写 localStorage、不出现在任何网络请求里,刷新页面即消失;本页没有任何上传接口。

2048 / 3072 / 4096 怎么选?

2048 位满足现行安全要求、兼容性最好;3072 位(约 128 位安全强度)适合长期使用;4096 位更保险但签名/验签明显变慢。一般 Web 与接口签名选 2048 或 3072 即可。

SPKI 和 PKCS#8 是什么?

SPKI 装公钥、PKCS#8 装私钥(未加密版)。本页不输出老式 PKCS#1 私钥;若接收方索要 PKCS#1,用 openssl pkey 一条命令即可在两种格式间转换。

为什么有的页面生成不了?

浏览器只在安全上下文(https 或 localhost)开放 crypto.subtle 密钥生成接口;若以 http 打开本页,页面会给出提示并禁用生成按钮。

相关工具