🎫 JWT令牌解码
Header · Payload · 签名算法 · Base64解码
Header · Payload · 签名算法 · Base64解码
JWT由三部分组成:Header(头部,含算法和类型)、Payload(载荷,含声明数据)、Signature(签名,用于验证令牌完整性)。三部分用点号(.)分隔。
本工具仅在浏览器本地解码,不会将令牌数据发送到服务器,完全安全。请勿在不可信环境粘贴生产环境的有效令牌。
签名验证需要密钥(对称加密需要共享密钥,非对称需要公钥)。本工具前端解码展示JWT内容,如需验签请使用后端工具。
它们是标准注册声明:exp到期时间、iat签发时间、nbf生效时间、sub主题、aud受众、iss签发者、jti唯一ID。本工具会把这些时间戳自动转成人话。
Session是服务端存储、客户端只存一个ID;JWT是无状态的,把用户信息编码进令牌本身,服务端不用存。JWT适合分布式/无状态场景,但令牌泄露风险更高。
JWT默认只是Base64编码,不是加密,任何人都能解码看到内容。它靠签名保证「内容没被篡改」,而不是「内容保密」。敏感信息绝不能放进JWT。
常见的有HS256(对称,用同一个密钥加解密)、RS256(非对称,用私钥签、公钥验)、ES256(基于椭圆曲线)。默认HS256最简单也最常用。
JWT的三段是Base64URL编码,不是普通Base64,字符集里没有+和/而是-和_。如果直接复制粘贴时缺了字符或混入换行,解码就会失败或乱码。
JWT形如「xxx.yyy.zzz」,用两个点分成三段,每段都是Base64URL编码的JSON(签名段是密文)。理解三段各自的作用,是掌握JWT的关键。
| 段 | 名称 | 内容 | 编码 |
|---|---|---|---|
| 第1段 | Header 头部 | 签名算法(alg)、令牌类型(typ) | Base64URL |
| 第2段 | Payload 载荷 | 标准声明+业务数据 | Base64URL |
| 第3段 | Signature 签名 | 对前两段+密钥的签名 | 密钥派生 |
注意:Header和Payload只是Base64URL编码,不是加密,任何人都能解码看到明文。签名的目的是防止内容被篡改。
JWT定义了一组标准的注册声明(Registered Claims),用于携带通用信息。虽然它们都是可选的,但使用JWT时通常会包含其中几个。
服务端校验时最重要的就是检查 exp 是否过期、iss/aud 是否匹配,防止token被滥用。
安全提醒:不要使用算法混淆攻击(篡改alg字段),服务端验签时必须固定允许的算法白名单。
| 字段 | 全称 | 含义 |
|---|---|---|
| iss | Issuer | 签发者 |
| sub | Subject | 主题(通常为用户ID) |
| aud | Audience | 接收方 |
| exp | Expiration Time | 过期时间 |
| nbf | Not Before | 生效时间 |
| iat | Issued At | 签发时间 |
| jti | JWT ID | 唯一标识 |
| 算法 | 类型 | 特点 | 适用场景 |
|---|---|---|---|
| HS256 | 对称 | 同一密钥签名验证 | 单服务/共享密钥 |
| HS384 | 对称 | 比HS256更安全 | 较高安全要求 |
| HS512 | 对称 | 强度最高 | 金融等高安全 |
| RS256 | 非对称 | 私钥签公钥验 | 多服务/第三方 |
| ES256 | 椭圆曲线 | 密钥短安全高 | 移动端/受限设备 |
1. 粘贴JWT令牌字符串。
2. 点击"解码"按钮。
3. 查看解析出的Header和Payload内容。