JWT 编码器
在浏览器中用 HS256、HS384 或 HS512 创建并签名 JWT。编辑头部和载荷 JSON,保留声明顺序以及 kid 等额外头部字段。
输入内容和文件始终留在浏览器中
头部、载荷与签名
请修正头部和载荷的 JSON——签名后的令牌会随输入显示在这里。
本页内容
为测试 API 和认证流程生成签名的 JSON Web Token:编辑头部和载荷 JSON,选择 HS256、HS384 或 HS512,输入密钥后复制令牌——令牌随每次按键实时更新。
详细功能
头部和载荷都必须是 JSON 对象;无效的 JSON 或数组等非对象值会在对应字段下提示,并且不会生成令牌。JSON 会被压缩(去除空白)并进行不带填充的 base64url 编码,保留您的声明顺序以及 kid、cty 等额外头部字段。头部中的 alg 值会被替换为列表中选择的算法;如果缺失,则添加在最前面。
HMAC 签名(SHA-256、SHA-384 或 SHA-512)由编译为 WebAssembly 的 Rust 加密模块计算;密钥按 UTF-8 文本使用。只提供对称的 HMAC 算法——需要私钥的 RS256 或 ES256 令牌无法在这里创建。密钥为空时仍会生成一个用空密钥签名的令牌,只适合做实验。
密钥和声明都留在页面中,不会被保存。工具不会自动添加 iat 或 exp:请自行在载荷中填写 NumericDate 值(以秒为单位的 Unix 时间)。
实用示例
jwt.io 测试向量:默认头部 {"alg":"HS256","typ":"JWT"} 和载荷 {"sub":"1234567890","name":"John Doe","iat":1516239022} 配合密钥 your-256-bit-secret,生成以 SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c 结尾的令牌,与 jwt.io 完全一致。
密钥 ID 和过期时间:头部 {"alg":"HS256","typ":"JWT","kid":"key-2026"}、载荷 {"sub":"42","role":"admin","exp":1767225600}、算法 HS384——编码后的头部为 {"alg":"HS384","typ":"JWT","kid":"key-2026"},字段顺序保持不变,签名长 64 个字符。
不是对象:载荷为 [1,2] 时,字段下方会显示 “必须是 JSON 对象”,令牌被清空。
如何使用此工具
编辑头部
调整 头部 中的 JSON——如果验证方需要,可添加
kid;alg由算法列表决定。填写声明
以 JSON 对象的形式在 载荷 中填写声明(
sub、role、exp…)。选择算法和密钥
在 算法 中选择 HS256、HS384 或 HS512,并在 密钥 中输入共享密钥。
复制令牌
已编码令牌 中的令牌随每次修改更新;点击 复制令牌 即可复制。
提示和最佳实践
- 使用至少与哈希等长的随机密钥:HS256 为 32 字节,HS384 为 48 字节,HS512 为 64 字节。
exp、nbf和iat以秒为单位,而不是毫秒:应为1767225600,而不是1767225600000。- 密钥中的每个字符都会参与计算,包括末尾的空格或换行。
- 载荷只是 base64url 编码而非加密——任何拿到令牌的人都能读取。
- 可以在 JWT 解码器中用同一密钥检查结果。