返回
JWT 构建
开发工具
正在载入
正在加载工具
正在准备工具,暂时无法估算剩余时间。
本工具的全部运算都发生在你的浏览器中,输入内容不会发送到任何服务器。
关于这个工具
在浏览器中用 JSON 对象和文本密钥生成紧凑格式的 HMAC 签名 JWT。选择 HS256、HS384 或 HS512,Web Crypto 会对 Base64url Header.Payload 字节签名。适合受控测试,可再用 JWT 解析工具检查结果。生成签名不等于验证声明或授予用户权限。
常见用途
- 为本地 API 和集成测试生成可复现的 HMAC 令牌。
- 用同一组测试声明比较 HS256、HS384 和 HS512。
- 查看签名输入,理解 JSON 字节如何影响 JWT 签名。
使用方法
- 1.将 Header 和 Payload 填为 JSON 对象,选择 HS256、HS384 或 HS512。
- 2.输入测试用文本密钥;工具使用其原始 UTF-8 字节,不将其按 Base64 或十六进制解码。
- 3.点击构建并复制令牌,或展开签名输入。算法选择器会覆盖 Header.alg;字符串 typ 保留,否则设为 JWT。
使用示例
可复现的 HS256 测试令牌
{
"header": {
"alg": "HS256",
"typ": "JWT"
},
"payload": {
"sub": "user-42",
"iat": 1700000000
},
"algorithm": "HS256",
"secret": "demo-only-key-do-not-use-in-production"
}eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyLTQyIiwiaWF0IjoxNzAwMDAwMDAwfQ.fskbbfT8Y-3vjXSxYDdc-fa23GdUmhivjVOFM9NWx8w
将 header、payload 分别填入对应字段,选择 algorithm,并原样输入 secret。此公开演示密钥只用于测试。
带 Unicode JSON 的 HS512
{
"header": {
"alg": "HS512",
"typ": "JWT"
},
"payload": {
"name": "你好 / 日本語"
},
"algorithm": "HS512",
"secret": "demo-only-key-do-not-use-in-production"
}eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoi5L2g5aW9IC8g5pel5pys6KqeIn0.6D1s9ZGSyIcSKLrHkt0c-TQ5z-EXQBbca1LyIGKjSD5nTsgjVxvxt9YDGLSLWJ_hp4GxYVemJchQ7XfXNV6xmQ
先将 UTF-8 声明编码,再进行 HMAC 签名。示例公开密钥仅是测试数据,不是生产密钥。
常见错误与检查
- 空 JSON、尾随逗号、数组和 null 都不能作为 Header 或 Payload 对象。
- 空密钥、超过 4,096 个 UTF-8 字节的密钥或缺少 Web Crypto 会阻止签名。
- 不要输入生产密钥,也不要复用公开的演示密钥。令牌即使已签名,声明仍然可读。
限制与说明
- 仅支持 HMAC 签名;不支持 RS256、ES256、EdDSA、无签名 alg:none 或 JWE 加密。
- 每份 JSON 最多 65,536 个 JavaScript 字符串代码单元;密钥最多 4,096 个 UTF-8 字节。
- 需要安全上下文中的 Web Crypto,例如 HTTPS 或 localhost。
- 不验证声明,不自动添加过期时间。Payload 仍可读取,签名不是加密。
- 工具允许短密钥用于测试,不强制生产密钥强度。RFC 7518 对 HS256、HS384、HS512 分别要求至少 256、384、512 位密钥;生产环境应使用安全生成的密钥和经过验证的应用库。
常见问题
工具真的会生成签名吗?
会。它用所选 SHA-256、SHA-384 或 SHA-512 对 Base64url Header.Payload 字符串计算 HMAC,再追加编码后的 MAC。
为什么与其他工具生成的签名不同?
请比较精确的 UTF-8 密钥、所选算法和序列化后的 Header/Payload 字节。工具会压缩空白,键顺序可能影响结果,alg 由选择器决定。
生成的令牌能直接用于生产认证吗?
生成本身不能证明权限。接收应用必须使用自己信任的密钥验证签名,并检查预期声明和算法。