JWT 签发 把 Header、Payload 和私钥/密钥组合成一个标准 JSON Web Token,输出 header.payload.signature 三段格式。所有签名计算用浏览器原生 WebCrypto API,密钥与签名材料不会上传任何服务器。
| 系列 | 全称 | 密钥类型 | 典型用途 |
|---|---|---|---|
| HS256/384/512 | HMAC + SHA | 对称密钥 | 单服务内部签发与校验 |
| RS256/384/512 | RSA-PKCS#1 v1.5 + SHA | RSA 私钥/公钥 | 跨服务、客户端公钥校验 |
| PS256/384/512 | RSA-PSS + SHA | RSA 私钥/公钥 | 同 RS,PSS 安全性更优 |
| ES256/384/512 | ECDSA + SHA | EC 私钥(P-256/384/521) | 短 token、移动端、对带宽敏感场景 |
alg 字段在签发时会以工具选中的算法强制覆盖 Header 输入,避免签错算法。
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out key.pemopenssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -out ec.pemkty=RSA 或 kty=EC),工具按 JSON 起始的 { 自动识别签出 token 后点右上角“去验签”或“查看结构”继续调试。注意 jwt 解析工具只看结构不验签;真正的签名校验应使用本站 JWT 验签 或你自己的后端实现。
<textarea> 里短暂存在,关闭页面前用”清空”按钮清掉HS256/384/512(HMAC)、RS256/384/512(RSA + PKCS#1 v1.5)、PS256/384/512(RSA-PSS)、ES256/384/512(ECDSA),共 12 种 JOSE 标准算法,全部用浏览器原生 WebCrypto 实现,不引入第三方库。
不会。密钥从输入到导入再到签名全程在浏览器内的 WebCrypto 引擎里,私钥材料不离开内存、不写入 localStorage、也不发起网络请求。即便如此,生产私钥仍不建议拿来做网页调试,最好使用专门生成的测试密钥。
两种都支持。-----BEGIN PRIVATE KEY----- 是 PKCS#8(OpenSSL genpkey / pkey 默认输出),-----BEGIN RSA PRIVATE KEY----- 是 PKCS#1(旧版 genrsa 默认)。工具会自动识别 PEM 头,PKCS#1 在内部包装成 PKCS#8 后导入。EC 私钥同理支持 PKCS#8 与 SEC1 (-----BEGIN EC PRIVATE KEY-----)。
JWS 规范固定:ES256 = P-256、ES384 = P-384、ES512 = P-521(注意是 P-521 不是 P-512)。私钥曲线必须与算法匹配,否则导入会报错。secp256k1 在标准 JWS 中不被认可(仅 RFC 8812 草案级),本工具不支持。
检查对方库期望的签名格式:JOSE 规范要求 r||s 拼接的固定长度(IEEE P1363)——本工具按规范输出。但 OpenSSL dgst -sign / Java JCA 默认产出 DER 编码,长度可变。如果用 OpenSSL 验证 ECDSA JWT,要先把签名段 base64url 解码后转成 DER。
RFC 7518 §3.2 要求 HMAC 密钥长度 ≥ 哈希输出长度:HS256 ≥ 32 字节、HS384 ≥ 48 字节、HS512 ≥ 64 字节。短密钥能签出来但不安全。生产环境一律用工具的"随机生成"按钮生成 32 字节随机串,或更长。