RSA 密钥生成器
在浏览器本地生成 RSA 公钥私钥对,全程不上传、不经过服务器。可自由选择密钥长度(2048 / 3072 / 4096 位)、哈希算法,以及用途——加密用 RSA-OAEP,签名用 RSA-PSS 或 PKCS#1 v1.5,并导出为 PEM(PKCS#8 / PKCS#1 / SPKI)、JWK 或 OpenSSH 公钥。同时可查看密钥强度、公钥指数和 SHA-256 / OpenSSH 指纹,并在接入 TLS、SSH、JWT、OAuth 或自有应用之前,当场完成加解密与签名验签测试。
- 支持生成 2048、3072、4096 位 RSA 密钥对,可搭配 SHA-256 / SHA-384 / SHA-512
- 用途可在 RSA-OAEP 加密、RSA-PSS 签名、PKCS#1 v1.5 签名之间切换
- 私钥可导出为 PKCS#8、PKCS#1 或 JWK,公钥可导出为 SPKI、PKCS#1、OpenSSH 或 JWK
- 查看密钥强度、公钥指数和 SHA-256 / OpenSSH 指纹,并可一键打包成 .zip 下载
密钥使用浏览器 Web Crypto API 在本地生成,不会离开浏览器,也不会上传到任何服务器。
功能简介
一屏完成完整的 RSA 流程:左侧选参数,右侧读公钥私钥,交付前还能就地验证。
- 01
本地生成密钥对
使用 Web Crypto API 在浏览器内生成 2048 / 3072 / 4096 位 RSA 密钥对。私钥在你的设备上生成,绝不上传、不记录、不传输,既适合生产密钥也适合内部调试。
- 02
用途与哈希可选
每把密钥只绑定一种用途:加密用 RSA-OAEP,签名用 RSA-PSS 或 RSASSA-PKCS1-v1_5,并搭配 SHA-256 / SHA-384 / SHA-512。任何参数变化都会重新生成一把用途正确的新密钥对。
- 03
多格式导出
私钥可导出为 PKCS#8(BEGIN PRIVATE KEY)、PKCS#1(BEGIN RSA PRIVATE KEY)或 JWK;公钥可导出为 SPKI、PKCS#1、OpenSSH 的 ssh-rsa 行或 JWK——正好是 OpenSSL、nginx、Java、Node.js 或 JWT 库所需的形态。
- 04
密钥强度与指纹
直接显示模数长度、固定的 65537 公钥指数、SPKI 公钥的 SHA-256 指纹以及 OpenSSH SHA256 指纹,方便双方核对拿到的是同一把钥匙。
- 05
加密与签名演示
可折叠的演示区让你用生成的密钥对进行加密→解密、或签名→验签,集成到任何环境之前先确认往返正确、签名有效。
- 06
复制、下载与打包
可将任意密钥复制到剪贴板,单独下载为 .pem、.json、.pub,也可在工具栏一键把整对密钥打包成 rsa-keypair.zip。
如何使用
先确定用途和参数,在本地生成,再按目标系统导入所需的精确格式导出。
- 01
按需求选用途:加密数据用 RSA-OAEP,生成数字签名用 RSA-PSS 或 PKCS#1 v1.5。
- 02
选择密钥长度(常规用 2048,长期或高价值密钥用 3072 / 4096)和哈希(SHA-256 / SHA-384 / SHA-512)。
- 03
点击「生成」在浏览器内创建密钥对,并查看密钥强度、公钥指数和 SHA-256 / OpenSSH 指纹。
- 04
设置私钥与公钥的输出格式(PKCS#8、PKCS#1、SPKI、JWK 或 OpenSSH),匹配 OpenSSL、nginx、SSH 或你的 JWT / OAuth 库。
- 05
复制或下载每个密钥,或用「下载 .zip」一次保存两者;如需贴合 nginx 习惯,可把私钥文件重命名为 .key。
- 06
打开测试演示区,对示例消息加解密或签名验签,部署前确认这对密钥行为正常。
功能说明
为真实的密钥发放与调试而设计,而不仅仅是一次性随机密钥输出。
- 浏览器内生成 RSA-OAEP、RSA-PSS、RSASSA-PKCS1-v1_5 密钥对
- 支持 2048 / 3072 / 4096 位模数与 SHA-256 / SHA-384 / SHA-512 哈希选择
- 私钥可导出为 PKCS#8 PEM、PKCS#1 PEM 或 JWK
- 公钥可导出为 SPKI PEM、PKCS#1 PEM、OpenSSH(ssh-rsa)或 JWK
- 提供 SHA-256 SPKI 指纹和 OpenSSH SHA256 指纹用于带外核对
- 内置加解密与签名验签演示,输入输出均为 Base64
- 固定 65537 公钥指数,确保各类库之间最大限度互通
- 一键复制、单独下载(.pem / .json / .pub)以及整对 .zip 打包下载
- 全屏工作区,便于阅读较长的 PEM 内容并并排对比密钥
- 完全本地的 Web Crypto 计算,私钥始终留在你的设备上、不上传
适合哪些场景
广泛适用于服务器配置、应用集成、身份认证和协议调试。
-
SSH 与服务器访问
生成 OpenSSH 公钥写入 authorized_keys 实现免密登录,配套私钥(PKCS#8 或 PKCS#1 PEM)保留在本机。
-
JWT、OAuth 与 OIDC 签名
生成 RSA-PSS(PS256)或 PKCS#1 v1.5(RS256)密钥并导出 JWK,供令牌签发方、身份提供商和读取 JWKS 端点的验签方使用。
-
TLS / HTTPS 密钥材料
生成 PKCS#8 私钥,配合 CSR 和证书用于 nginx、Apache 或负载均衡(按服务器习惯重命名为 .key)。
-
载荷与机密加密
用 RSA-OAEP 加密一小段机密或两个服务之间交换的随机 AES 密钥,再用对称加密处理大数据。
-
库与 SDK 集成
把 JWK 或 PEM 导入 Node.js(crypto / jose)、Python(cryptography)、Java(KeyFactory)或 Go,快速验证导入与签名流程。
-
测试夹具与演示
为单元测试、CI 夹具、文档示例和安全培训快速生成临时密钥对与签名,无需触碰生产密钥。
延伸阅读
若只需为密钥文件计算指纹或在没有密钥对的情况下校验产物,可使用 哈希生成器 。当你用这些 RSA 密钥签发或验证令牌时,可继续使用 JWT 检查器 。若要安全地查看或传输 DER 字节和 PEM 内容,可搭配 Base64 编码解码 。当这些密钥签发出证书后,可用 证书解码器 查看它的使用者、SAN 和有效期,再部署上线。
使用建议
RSA 密钥是长期有效的机密——所有信任它的系统的安全,都取决于你如何保管私钥。
- 至少使用 2048 位密钥;需要多年保持有效的密钥建议 3072 或 4096 位
- 用途要与目的匹配:加密用 OAEP,签名用 PSS 或 PKCS#1,切勿一钥两用
- 私钥应离线保存,远离日志、截图、聊天记录、工单和版本控制
- 导入前确认目标所需的精确格式(PKCS#8 还是 PKCS#1、SPKI 还是 OpenSSH、PEM 还是 DER)
- 传输公钥后,通过另一条渠道核对 SHA-256 或 OpenSSH 指纹
- 存储或分享前用口令(如借助 OpenSSL)对私钥进行加密保护
- 按既定周期轮换密钥,并对任何可能泄露的密钥立即吊销
- 高价值生产系统优先使用硬件或 KMS 托管的密钥,避免可导出密钥带来的风险
边界与注意事项
理解这些边界,避免基于错误的安全假设来设计系统。
- RSA-OAEP 只能加密很小的数据(几百字节);应加密对称密钥再用 AES 处理大数据
- 本工具只生成裸密钥对,不签发 X.509 证书或 CSR,也不负责密钥的存储与轮换
- nginx / TLS 中本工具私钥可用作 ssl_certificate_key,但 ssl_certificate 仍需 CA 签发的证书
- 生成的私钥未加密;如需口令保护,请用 OpenSSL 等外部工具处理
- 公钥指数固定为 65537(0x010001),即标准的可互操作值,不可配置
- 生成 4096 位密钥可能明显更慢,取决于设备和浏览器性能
常见问题
关于格式、用途、安全、互通性和实际限制的常见问题解答。
密钥是在服务器上生成的吗?
不是。每对密钥都使用 Web Crypto API 在浏览器本地生成。私钥在你的设备上创建,绝不上传、记录或传输,因此用于真实机密也是安全的。
PKCS#8 和 PKCS#1 有什么区别?
它们是同一把 RSA 私钥的两种编码。PKCS#8(BEGIN PRIVATE KEY)是现代、与算法无关的封装,被大多数当前的库使用;PKCS#1(BEGIN RSA PRIVATE KEY)是较早的 RSA 专用格式,部分旧工具和 OpenSSL 流程仍要求它。两者都是 PEM 文本,可在本工具切换格式而无需重新生成。
在 nginx 或 OpenSSL 里,.key、.pem、.crt 是什么意思?
它们是命名习惯而非不同格式——内容通常都是 PEM。.key 习惯上保存私钥(nginx 的 ssl_certificate_key),.crt / .cer / .pem 保存证书(ssl_certificate)。本工具生成的是裸公钥而非证书,所以做 TLS 仍需 CSR 和 CA 签发的证书。
用途该选 OAEP、PSS 还是 PKCS#1?
加密数据用 RSA-OAEP;现代签名用 RSA-PSS(JWT 的 PS256);兼容性签名用 RSASSA-PKCS1-v1_5(JWT 的 RS256 及许多旧系统)。为加密生成的密钥不应再用于签名,反之亦然。
2048 位 RSA 还安全吗,要不要用 4096?
2048 位 RSA 目前对大多数用途仍被认为安全,3072 位提供更强的长期余量。4096 位为极长期或高价值密钥留出更大裕度,但运算更慢、密钥更大。按密钥需要保持可信的年限来选择即可。
怎么用这个工具得到 SSH 密钥?
把公钥格式设为 OpenSSH,即可得到用于 authorized_keys 的 ssh-rsa 行,私钥则导出为 PKCS#8 或 PKCS#1 PEM。在客户端用严格权限(chmod 600)保存私钥。
这些密钥能导入 Node.js、Python 或 Java 吗?
可以。Web Crypto 和 jose 用 JWK;Node.js crypto 和 Python cryptography 用 PKCS#8 PEM;Java KeyFactory 用 PKCS#8 或 PKCS#1 PEM。按你所用库文档选择对应格式直接导入即可。
为什么 RSA-OAEP 只能加密很短的消息?
RSA 每次运算最多只能加密几百字节,上限为密钥长度减去填充。实际系统中用 RSA-OAEP 加密一个随机对称(AES)密钥,再用该 AES 密钥加密真正的数据——这种模式称为混合加密。
公钥指数 65537 是什么?
它是 RSA 公钥 (n, e) 中的 e,用于加密和验签。65537(0x010001)是近乎通用的默认值,因为它足够大以保证安全、又足够小以保证高效,从而最大化互通性。本工具将 e 固定为 65537。
更多相关工具
可将 RSA 密钥与哈希生成器(计算指纹)、JWT 检查器(解码与验签)以及 HMAC 生成器(共享密钥签名)搭配使用。