浏览器本地工具

JWT 解码与签名验证器

解码 Header 和 Payload,检查 Claims 有效期,并可选验证签名。

浏览器本地处理 · 不上传 · 不需要账号

Claims 明细

JWT 签名验证

可选:输入用于验证此令牌的 HMAC 密钥或 PEM 公钥。

HS 使用共享密钥;RS、PS 和 ES 使用 PEM 公钥。

尚未验证

解码不等于验证。在检查签名、签发者、受众、有效时间和应用规则之前,不能信任 Claims。

这个工具如何工作

解码 Header 和 Payload,检查 Claims 有效期,并可选验证签名。

先使用测试样例了解输入格式和结果元数据,再替换成你自己的内容。

隐私与安全使用

所有处理都在当前浏览器标签页完成。特别大的内容仍可能占用较多设备内存。

解码不等于验证。在检查签名、签发者、受众、有效时间和应用规则之前,不能信任 Claims。

这个工具会说明的常见错误

  • 输入为空、已经损坏,或者不是这个工具要求的格式。
  • 所选模式与 alphabet、文件类型或数据表示方式不匹配。
  • 编码文本和解码字节同时存在时,超大内容可能耗尽内存。
  • 转换成功不代表解码内容安全、可信或没有恶意代码。

等价命令

可以在已有的运行环境或 Shell 中完成相同操作。应验证不可信输入,避免把二进制数据直接输出到终端。

Python

import base64, json
h, p, s = token.split('.')
decode = lambda value: json.loads(base64.urlsafe_b64decode(value + '=' * (-len(value) % 4)))
print(decode(h), decode(p))

JavaScript

const [header, payload] = token.split('.');
const decode = value => JSON.parse(Buffer.from(value, 'base64url').toString('utf8'));
console.log(decode(header), decode(payload));

Shell

IFS=. read -r header payload signature <<EOF
$TOKEN
EOF
printf '%s' "$payload" | basenc --base64url --decode

标准与官方参考资料