# JWT 解析与签名验证器

解析 JWT 的 header/payload 并高亮显示，诊断 exp/nbf/iat/iss/aud/sub/jti 等 claim，使用 HS*/RS*/PS*/ES*/EdDSA 密钥验签，并提供篡改 payload 的伪造教学演示

> 标准页面: https://elysiatools.com/zh/tools/jwt-inspector-verifier

- **分类:** Security

- **关键词:** jwt, 令牌, 解码, 验签, 安全

## 概述

粘贴一个紧凑格式 JWT（JWS），工具会：

1. 把 header 和 payload 做 base64url 解码，渲染为可读且语法高亮的 JSON。
2. 对 exp / nbf / iat / iss / aud / sub / jti 等 claim 做合法性诊断，标出过期、尚未生效或缺失的 claim。
3. 使用共享密钥（HS*）或 PEM/JWK 格式的非对称公钥（RS*/PS*/ES*/EdDSA）验证密码学签名。
4. 可选地用你的密钥重新签一个被篡改的 payload，演示为什么服务端必须固定期望的 alg，并拒绝“签名校验通过但由错误方签发”的令牌。

安全说明：
- 验签在服务端用 Node crypto 完成，密钥不会离开本次请求。
- alg=none 的令牌会被识别，且永远不会被判为有效。
- 生产环境务必在自家后端强制期望的算法、issuer 和 audience；本工具仅用于检查与教学。

## 输入项

- **JWT 令牌** (textarea): eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkphbmUgRG9lZSIsImlhdCI6MTUxNjIzOTAyMn0.yo-bLjjeUhUPia17JiJbc2f1e0JXJIJAi4auivcB-IY
- **验证模式** (select)
- **共享密钥 (HS*)** (text): your-256-bit-secret (only for HS256/384/512)
- **公钥 PEM / JWK (RS*/PS*/ES*/EdDSA)** (textarea): -----BEGIN PUBLIC KEY----- ... -----END PUBLIC KEY----- or a JWK JSON object { "kty":"...", ... }
- **伪造的 Payload** (textarea): {"sub":"attacker","admin":true,"exp":9999999999}
- **允许时钟偏差（秒）** (number)

## 适用场景

- 需要快速解码 JWT 令牌以查看其 Header 和 Payload 中的 JSON 数据及 Claim 声明时。
- 需要使用对称密钥（HS256/384/512）或非对称公钥（RS*/PS*/ES*/EdDSA）验证 JWT 签名是否有效时。
- 在开发或安全审计中，需要测试和演示 JWT 篡改攻击以验证后端防御逻辑时。

## 工作原理

- 输入紧凑格式的 JWT 字符串，工具会自动将其 Header 和 Payload 部分进行 base64url 解码，并以高亮 JSON 格式展示。
- 解析并诊断 exp（过期时间）、nbf（生效时间）、iat（签发时间）等标准 Claim，结合设置的时钟偏差检测令牌状态。
- 根据选择的验证模式，使用输入的 HS* 共享密钥或 PEM/JWK 格式的非对称公钥，在服务端通过 Node crypto 模块执行密码学签名验证。
- 在伪造模式下，使用提供的密钥对修改后的 Payload 进行重新签名，生成用于安全演示的篡改令牌。

## 使用案例

- 调试 API 接口时，快速查看前端携带的 Authorization Bearer 令牌内容及过期状态。
- 配置单点登录（SSO）或 OAuth2 流程时，验证身份提供商（IdP）签发的 JWT 签名是否正确。
- 安全测试人员模拟 JWT 篡改攻击，验证后端服务是否正确校验了签名和关键 Claim。

## 常见问题

### 这个工具会泄露我的密钥或 JWT 令牌吗？

不会。虽然验签在服务端完成，但所有密钥和令牌仅用于本次请求的即时计算，绝不进行任何持久化存储或日志记录。

### 工具支持哪些签名算法？

支持对称加密算法 HS256、HS384、HS512，以及非对称加密算法 RS*、PS*、ES* 和 EdDSA。

### 为什么我的令牌提示过期，但我认为它仍然有效？

这通常是由于服务器与本地时钟不一致导致的。您可以在工具中调整“允许时钟偏差（秒）”参数来容忍微小的时钟不同步。

### 什么是“伪造演示”模式？

该模式允许您修改 Payload 内容并使用已知密钥重新生成签名，用于向开发人员演示如果后端未严格校验 alg 或 issuer，攻击者将如何伪造身份。

### 工具支持验证 alg=none 的令牌吗？

工具会识别并解码 alg=none 的令牌，但出于安全规范，系统永远不会将其判定为“有效签名”。

## 相关工具

- [JWK 生成与解析器](https://elysiatools.com/zh/tools/jwk-generator): 生成 RSA、EC（P-256/P-384/P-521/secp256k1）与 OKP（Ed25519/Ed448/X25519/X448）的 JSON Web Key，或解析已有 JWK 以查看参数、指纹与元信息
- [WebAuthn Passkey Assertion 解码与 Challenge 调试器](https://elysiatools.com/zh/tools/webauthn-passkey-assertion-decoder-challenge-debugger): 解析 clientDataJSON、authenticatorData、flags、rpIdHash 和 signCount；提供公钥时验证 ES256、RS256 或 Ed25519 签名。
- [JWT 解码器](https://elysiatools.com/zh/tools/jwt-decoder): 解码 JWT 令牌
- [游戏存档查看器](https://elysiatools.com/zh/tools/game-save-viewer): 拖入任意游戏存档——Minecraft NBT、虚幻引擎 GVAS、幻兽帕鲁容器、JSON/XML/INI/Lua 文本存档、SQLite 档案——识别格式、引擎版本、关键进度字段并给出有界的结构树。
- [分布式追踪解码与瀑布图可视化](https://elysiatools.com/zh/tools/distributed-trace-decoder-waterfall-visualizer): 解析 Jaeger、Zipkin 或 OpenTelemetry 的 trace JSON，并以瀑布图展示 span 时序与异常节点
- [Snowflake / Discord ID 位字段解码器](https://elysiatools.com/zh/tools/snowflake-discord-id-bit-decoder): 使用无损 64 位解析 Snowflake 风格 ID，提取时间戳、worker、process、sequence 或平台特有字段，并可推断 Discord shard。
- [X.509 证书解析器](https://elysiatools.com/zh/tools/certificate-decoder): 解析 X.509 SSL/TLS 证书（粘贴 PEM 或上传 .pem/.crt），查看主题、签发者、有效期（含过期状态）、公钥、签名算法、序列号、SAN、密钥用途和指纹。类似 openssl x509 -text 的可视化版。本地运行。
- [BSON转换器](https://elysiatools.com/zh/tools/bson-converter): 将数据编码/解码为BSON（Binary JSON）格式

## 示例

- [JWT 示例](https://elysiatools.com/zh/samples/jwt-samples): 从基础令牌结构到高级安全实现的全面JWT示例
- [Terraform Plan JSON 样本](https://elysiatools.com/zh/samples/terraform-plan-json-samples): 用于依赖可视化和变更审查的 Terraform plan JSON 文件样本，贴近 terraform show -json 输出结构
- [十六进制/Unicode转换样本](https://elysiatools.com/zh/samples/text-hex-unicode-formats): 十六进制和Unicode转义序列转换的测试样本
- [WebRTC 实时通信示例](https://elysiatools.com/zh/samples/webrtc-samples): 全面的 WebRTC 示例，用于点对点音视频通信、数据通道、屏幕共享和信令服务器实现
