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 解析中验证 →“打开对应工具,把 token 粘进去看 Header / Payload / Signature 三段是否符合预期。注意 JWT 解析工具不做签名验证——要严格验签需用对应公钥在后端或 OpenSSL 中校验。
<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、不发起任何网络请求。这是和大多数线上 JWT 签发工具的关键区别——后者大多需要把 PEM 粘贴到远程服务器签名。
两种都支持。-----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 字节随机串,或更长。