⭐ 觉得好用?收藏备用,下次直接打开
算法
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 解析中验证 →“打开对应工具,把 token 粘进去看 Header / Payload / Signature 三段是否符合预期。注意 JWT 解析工具不做签名验证——要严格验签需用对应公钥在后端或 OpenSSL 中校验。

安全提醒

  • 不要把生产密钥贴进任何在线工具——哪怕是声称本地处理的;调试请用专门生成的测试密钥
  • 私钥粘贴后会在 <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、不发起任何网络请求。这是和大多数线上 JWT 签发工具的关键区别——后者大多需要把 PEM 粘贴到远程服务器签名。

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 字节随机串,或更长。