选择密钥长度
在「密钥长度」里选择 2048、3072 或 4096 位。2048 位是当前通用选择,3072 位适合需要长期使用的服务,4096 位强度最高但生成明显更慢。
在浏览器本地生成 RSA 密钥对,左右并排输出 PEM 格式的公钥与私钥,支持 2048 / 3072 / 4096 位、签名与加密两类密钥类型、PKCS#8 与 PKCS#1 两种私钥格式。
选择密钥长度后点击「生成密钥对」。密钥会在你的浏览器中即时生成,不会发送到服务器。
RSA 密钥生成器是一款完全在浏览器本地运行的工具,一键生成可用于数字签名与公钥加密的 RSA 密钥对,输出标准 PEM 格式的公钥与私钥。选择密钥长度与私钥封装格式,点击一次即可拿到可以立即使用的密钥文件。
它适合需要临时生成一把干净密钥的后端开发者——配置 TLS、签发 JWT、生成自签证书;运维工程师——为服务签发证书或轮换密钥;安全学习者——亲手观察密钥对与 PEM 的真实结构。任何需要一份格式正确的密钥、又不想在服务器上敲 openssl 命令的人都能直接使用。
在「密钥长度」里选择 2048、3072 或 4096 位。2048 位是当前通用选择,3072 位适合需要长期使用的服务,4096 位强度最高但生成明显更慢。
「密钥类型」决定这把密钥用来签名还是加密:RSASSA-PKCS1-v1_5 与 RSA-PSS 用于数字签名(JWT 的 RS256 就基于前者),RSA-OAEP 用于公钥加密。
「哈希」决定摘要强度(SHA-256 / 384 / 512),同时用于指纹计算。「私钥格式」决定私钥以哪种 PEM 封装输出:PKCS#8 是通用格式,PKCS#1 是 OpenSSL 传统格式。
点击「生成密钥对」。密钥在浏览器的 Web Crypto API 中即时生成,公钥与私钥左右并排显示,可一键复制或下载为 .pem 文件。
支持 2048、3072、4096 位模数,覆盖从通用到高强度的全部常见规格,并针对每种长度给出适用场景提示。
可选 RSASSA-PKCS1-v1_5、RSA-PSS 两种签名算法,或 RSA-OAEP 加密算法,按下游系统的实际要求生成。
SHA-256、SHA-384、SHA-512 可选,摘要算法同时用于密钥指纹的计算。
PKCS#8 通用格式与 PKCS#1 传统格式可随时切换,同一把密钥输出两种封装,不用再手动转换。
公钥使用 SPKI 封装(PUBLIC KEY),私钥使用 PRIVATE KEY 或 RSA PRIVATE KEY 标签,每行 64 字符折行,与 OpenSSL 输出的排版完全一致。
给出公钥 SPKI 派生内容的指纹,可以用来核对公钥是否被篡改,或在配置中做指纹比对。
公钥与私钥同屏显示,无需上下滚动来回对照,密钥正文不折行、可直接横向阅读。
每个面板都提供复制与下载按钮,下载得到标准的 .pem 文件,可直接交给 OpenSSL、Nginx 或代码库使用。
全部计算在你的浏览器中完成,密钥不会发送到服务器、不会写入本地存储,也不会出现在任何日志里。
状态栏实时显示本次生成用时与实际位数,便于评估高强度密钥在目标设备上的表现。
不会。整个生成过程在你的浏览器里通过 Web Crypto API 完成,密钥材料既不会发送到服务器,也不会写入 localStorage 或任何持久化存储。页面加载完成后断网也能正常使用。
RSA 密钥对由一把公钥和一把私钥组成。用私钥签名的数据可以用对应的公钥验证,签名者无法伪造;反过来,用公钥加密的数据只有私钥能解开。这个「一对多对一」的特性是数字签名和公钥加密的基础。
PEM 是一种文本封装格式,用 -----BEGIN ...----- 和 -----END ...----- 包住 Base64 编码的密钥数据,人眼可读,便于粘贴到配置文件或环境变量里。DER 则是同一份数据的二进制形式,体积更小但不可读。两者内容等价,可以互相转换。
公钥输出的是 SPKI(SubjectPublicKeyInfo)封装,标签为 PUBLIC KEY,它只包含公钥参数,可以安全分发。私钥的 PKCS#8 封装标签为 PRIVATE KEY,PKCS#1 封装标签为 RSA PRIVATE KEY。两者都是标准格式,可以用 OpenSSL 直接读取。
默认用 PKCS#8。它把密钥类型写进了文件本身,因此同一个格式既能装 RSA 也能装 EC,是目前绝大多数库(包括 Node.js、Python cryptography、Java 的 PKCS8EncodedKeySpec)默认接受的格式。只有当对接的工具明确要求传统 RSA 私钥文件时才切到 PKCS#1。
用于数字签名就选 RSASSA-PKCS1-v1_5 或 RSA-PSS,用于公钥加密就选 RSA-OAEP。两者生成的密钥结构相同,但不能互换用途——同一把密钥不能既签名又加密。JWT 的 RS256 / RS384 / RS512 对应 RSASSA-PKCS1-v1_5。
不会。哈希只影响签名摘要的强度与指纹的计算方式,同样的长度和类型下,选择 SHA-256 还是 SHA-512 生成的密钥结构完全一致。两者的区别在于安全余量:SHA-512 抗碰撞能力更强,但在绝大多数场景里 SHA-256 已经足够。
2048 位是当前通用标准,安全余量充足且性能最好;3072 位适合需要长期使用的服务密钥;4096 位强度更高,但生成和运算都明显更慢,在移动端与高并发场景未必划算。除非有明确的合规或寿命要求,2048 位通常就够用。
4096 位需要搜索两个各约 2048 位的素数并进行模幂运算,计算量随位数急剧上升,这属于正常的密码学运算成本,而不是工具卡住了。等待几秒是值得的,建议在服务端生成而不是在手机上生成。
私钥等同于密码本身。不要提交到代码仓库、粘贴到聊天工具或写进日志。常见做法是放进密钥管理服务或 CI 的加密变量,或者保存在服务器上的受限权限文件中,并设置 600 权限。
本工具输出的是未加密的私钥,这样便于被程序直接读取。保存时应依赖文件权限、密钥管理服务或容器 Secret 来保护。如果需要口令加密的私钥,可用 OpenSSL 加密:openssl pkcs8 -topk8 -in rsa_private.pem -out rsa_enc.pem -v2 aes-256-cbc。
不可以。一对密钥必须配套使用:拿 A 的私钥签名,就只能用 A 的公钥来验证。混用会直接导致验签失败。工具生成的公钥与私钥天然配对,并在页面上一同展示。
可以。工具使用的 RSASSA-PKCS1-v1_5 算法正是 RS256 的底层签名算法,与 JWT 常用的 RS256、RS384、RS512 兼容。生成后把私钥以 PKCS#8 格式交给签名库,把公钥交给验签方即可。
它是公钥 SPKI 内容的 SHA-256 摘要。公钥是可以公开分发的,但一旦被中间人替换,攻击者就能伪造签名。用指纹做一次核对(例如通过另一个安全渠道比对),就能确认拿到的公钥确实是预期的那把。