⭐ 觉得好用?收藏备用,下次直接打开
算法
Header
Payload
🔒
密钥不会离开你的浏览器
所有签名计算均在本机 WebCrypto 内完成,密钥与生成的 Token 不上传任何服务器、不写入存储。
请勿粘贴生产环境密钥。本工具仅供调试和学习使用,因密钥外泄、误用、被盗导致的任何损失, 本网站不承担任何责任
Secret 密钥

JWT 签发 把 Header、Payload 和私钥/密钥组合成一个标准 JSON Web Token,输出 header.payload.signature 三段格式。所有签名计算用浏览器原生 WebCrypto API,密钥与签名材料不会上传任何服务器。

算法速查

系列全称密钥类型典型用途
HS256/384/512HMAC + SHA对称密钥单服务内部签发与校验
RS256/384/512RSA-PKCS#1 v1.5 + SHARSA 私钥/公钥跨服务、客户端公钥校验
PS256/384/512RSA-PSS + SHARSA 私钥/公钥同 RS,PSS 安全性更优
ES256/384/512ECDSA + SHAEC 私钥(P-256/384/521)短 token、移动端、对带宽敏感场景

alg 字段在签发时会以工具选中的算法强制覆盖 Header 输入,避免签错算法。

密钥来源

  • OpenSSL 生成 RSA 2048 PKCS#8openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out key.pem
  • OpenSSL 生成 EC P-256openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -out ec.pem
  • JWK 私钥:直接粘贴 JSON(kty=RSAkty=EC),工具按 JSON 起始的 { 自动识别
  • HS 密钥:直接输入字符串;建议用工具内置的”随机生成”按钮生成 32 字节随机串

与”JWT 解析”配套

签出 token 后点右上角“去验签”或“查看结构”继续调试。注意 jwt 解析工具只看结构不验签;真正的签名校验应使用本站 JWT 验签 或你自己的后端实现。

安全提醒

  • 不要把生产密钥贴进网页调试工具;调试请用专门生成的测试密钥
  • 私钥粘贴后会在 <textarea> 里短暂存在,关闭页面前用”清空”按钮清掉
  • HS 算法密钥短于哈希输出长度时不会报错但不安全,工具不会强制阻止,由使用者自己把控

📍使用场景

  • 调试后端 API临时签一个带 sub/exp 的 token 替代正式登录,方便用 curl/Postman 测受保护接口。
  • 验证签名实现怀疑后端签名实现有问题时,本地用相同密钥签同一 payload 比对,定位是密钥还是算法不一致。
  • 出题/演示场景给同事演示 JWT 结构、给课程出 CTF 题目,需要可控的 header / payload / 签名一组。
  • 切算法迁移测试服务从 HS256 升 RS256 / ES256 时,本地先签几条带各算法的 token 验证客户端能正确校验。

常见问题

支持哪些算法?

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、也不发起网络请求。即便如此,生产私钥仍不建议拿来做网页调试,最好使用专门生成的测试密钥。

RSA 私钥要 PKCS#8 还是 PKCS#1?

两种都支持-----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-----)。

ES256 / ES384 / ES512 用什么曲线?

JWS 规范固定:ES256 = P-256ES384 = P-384ES512 = P-521(注意是 P-521 不是 P-512)。私钥曲线必须与算法匹配,否则导入会报错。secp256k1 在标准 JWS 中不被认可(仅 RFC 8812 草案级),本工具不支持。

签出来的 ECDSA token 在其他库验证不过?

检查对方库期望的签名格式:JOSE 规范要求 r||s 拼接的固定长度(IEEE P1363)——本工具按规范输出。但 OpenSSL dgst -sign / Java JCA 默认产出 DER 编码,长度可变。如果用 OpenSSL 验证 ECDSA JWT,要先把签名段 base64url 解码后转成 DER。

HS 算法的密钥强度有要求吗?

RFC 7518 §3.2 要求 HMAC 密钥长度 ≥ 哈希输出长度:HS256 ≥ 32 字节、HS384 ≥ 48 字节、HS512 ≥ 64 字节。短密钥能签出来但不安全。生产环境一律用工具的"随机生成"按钮生成 32 字节随机串,或更长。