JWT编码器(生成与签名)
根据Header和Payload的JSON,使用HS256、HS384或HS512生成HMAC签名的JWT(JSON Web Token),全部在浏览器内完成。包括密钥在内的输入内容不会发送到服务器。
支持的HMAC签名算法一览
| 算法 | 哈希函数 | 签名长度 | 说明 |
|---|---|---|---|
| HS256 | SHA-256 | 256位(32字节) | 使用最广泛的默认HMAC签名,是OAuth 2.0、OpenID Connect ID令牌等许多实现的标准选择。 |
| HS384 | SHA-384 | 384位(48字节) | 当需要比HS256更长的签名以提升安全余量时可选用的中间选项。 |
| HS512 | SHA-512 | 512位(64字节) | 签名长度最长,通常与足够长的随机密钥搭配使用。 |
使用提示
- 生成的JWT仅通过浏览器内的Web Crypto API签名,包含密钥在内的输入内容不会发送到toolbase.cc的服务器。
- 切换签名算法(HS256/HS384/HS512)会自动更新Header JSON中的
alg字段。若需添加kid等其他声明,可直接编辑Header。 - 本工具仅支持HMAC(对称密钥)方式。如需RS256、ES256等公钥方式的签名,请使用Node.js等服务器端的库。
- 编辑Header或Payload后,请务必再次点击"生成JWT",否则显示的仍是编辑前内容生成的旧JWT。
- 如需立即确认生成的JWT内容,可将其粘贴到姊妹工具JWT解码器中查看Header和Payload。
常见问题
不建议这样做。虽然签名处理本身在浏览器内完成且是安全的,但将密钥输入浏览器工具这一行为本身并不符合生产环境的安全方针。本工具主要用于API开发阶段的调试或学习用途。
HS256是发送方与接收方共享同一密钥的对称密钥方式,RS256则是用私钥签名、用公钥验证的公钥(非对称密钥)方式。本工具仅支持HS256、HS384、HS512这三种HMAC方式,不支持RS256、ES256等公钥方式。
可以,Header JSON可以直接编辑。但如果所选算法(实际用于计算签名的算法)与
alg字段的值不一致,其他实现在验证该JWT时可能会报错,因此请务必保持两者一致。您可以将生成后的JWT字符串粘贴到姊妹工具「JWT解码器」中,立即查看Header和Payload的内容。不过签名本身的有效性,只能由持有相同密钥的服务器端验证逻辑最终确认。
闲话 ― 为什么JWT的签名可以「仅在浏览器内」完成
JWT的签名算法大致分为两类:发送方和接收方共享同一密钥的「对称密钥方式(HMAC,即HS256/HS384/HS512)」,以及用私钥签名、用公钥验证的「公钥加密方式(RS256、ES256等)」。前者可以借助W3C标准化的Web Crypto API(SubtleCrypto)中的crypto.subtle.sign(),无需任何外部库即可在浏览器内完成计算,因此本工具刻意只支持HMAC方式。
HMAC签名的安全性完全取决于密钥是否难以被猜到,而与Header或Payload的内容无关。RFC 7518(JSON Web Algorithms)建议HS256的密钥长度应至少为256位(32字节);若使用短单词或字典中常见的字符串作为密钥,签名就有被暴力破解伪造的风险。在实际生产环境中,应使用随机数生成器生成的足够长的随机字符串作为密钥。
本工具是面向开发者的实用工具,主要用于API开发时的调试或测试Webhook签名验证逻辑。您输入的密钥仅在浏览器内存中处理,不会向外部发送,但共享设备或浏览器扩展收集剪贴板或输入内容的风险并非为零。强烈建议即使只是为了调试,也不要将生产环境中实际使用的密钥输入此类工具。