返回

JWT 构建

开发工具

正在载入

正在加载工具

正在准备工具,暂时无法估算剩余时间。

本工具的全部运算都发生在你的浏览器中,输入内容不会发送到任何服务器。

关于这个工具

在浏览器中用 JSON 对象和文本密钥生成紧凑格式的 HMAC 签名 JWT。选择 HS256、HS384 或 HS512,Web Crypto 会对 Base64url Header.Payload 字节签名。适合受控测试,可再用 JWT 解析工具检查结果。生成签名不等于验证声明或授予用户权限。

常见用途

  • 为本地 API 和集成测试生成可复现的 HMAC 令牌。
  • 用同一组测试声明比较 HS256、HS384 和 HS512。
  • 查看签名输入,理解 JSON 字节如何影响 JWT 签名。

使用方法

  1. 1.将 Header 和 Payload 填为 JSON 对象,选择 HS256、HS384 或 HS512。
  2. 2.输入测试用文本密钥;工具使用其原始 UTF-8 字节,不将其按 Base64 或十六进制解码。
  3. 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 由选择器决定。

生成的令牌能直接用于生产认证吗?

生成本身不能证明权限。接收应用必须使用自己信任的密钥验证签名,并检查预期声明和算法。

相关工具