JWT在线解码工具
工具介绍
JWT(JSON Web Token)是一种开放标准(RFC 7519),用于在各方之间安全地传输信息。JWT由Header、Payload、Signature三部分组成,用点(.)分隔。Header和Payload使用Base64Url编码,不是加密,任何人都可以解码查看。本工具支持在线解码JWT Token,解析Header和Payload内容,自动识别标准声明字段并格式化时间戳。所有操作均在浏览器本地完成,Token不会上传任何服务器,安全可靠。
JWT结构说明
| Header(头部) | 通常包含两部分:令牌类型(typ)和所使用的签名算法(alg),如HS256、RS256等。使用Base64Url编码。 |
|---|---|
| Payload(载荷) | 包含声明(Claims),即关于实体(通常是用户)和其他数据的陈述。分为注册声明、公共声明和私有声明。使用Base64Url编码。 |
| Signature(签名) | 用于验证消息在传递过程中有没有被更改。对于使用私钥签名的Token,还可以验证发送方的身份。 |
标准注册声明
| 声明 | 名称 | 说明 |
|---|---|---|
| iss | 签发者 | Issuer,签发该Token的主体 |
| sub | 主题 | Subject,该Token面向的用户/主体 |
| aud | 受众 | Audience,接收该Token的一方 |
| exp | 过期时间 | Expiration Time,Token过期时间(Unix时间戳) |
| nbf | 生效时间 | Not Before,在此时间之前Token无效 |
| iat | 签发时间 | Issued At,Token签发时间(Unix时间戳) |
| jti | 令牌ID | JWT ID,Token的唯一标识符 |
常用签名算法
| 算法 | 名称 | 类型 | 说明 |
|---|---|---|---|
| HS256 | HMAC-SHA256 | 对称加密 | 使用SHA-256的HMAC签名 |
| HS384 | HMAC-SHA384 | 对称加密 | 使用SHA-384的HMAC签名 |
| HS512 | HMAC-SHA512 | 对称加密 | 使用SHA-512的HMAC签名 |
| RS256 | RSASSA-PKCS1-SHA256 | 非对称加密 | 使用SHA-256的RSA签名 |
| RS384 | RSASSA-PKCS1-SHA384 | 非对称加密 | 使用SHA-384的RSA签名 |
| RS512 | RSASSA-PKCS1-SHA512 | 非对称加密 | 使用SHA-512的RSA签名 |
| ES256 | ECDSA-SHA256 | 非对称加密 | 使用SHA-256的ECDSA签名(P-256曲线) |
| ES384 | ECDSA-SHA384 | 非对称加密 | 使用SHA-384的ECDSA签名(P-384曲线) |
| ES512 | ECDSA-SHA512 | 非对称加密 | 使用SHA-512的ECDSA签名(P-521曲线) |
| PS256 | RSASSA-PSS-SHA256 | 非对称加密 | 使用SHA-256的RSA-PSS签名 |
| none | 无签名 | 不安全 | 未使用签名,请勿在生产环境使用 |
使用步骤
使用技巧
常见问题
Q1: JWT解码和JWT验证有什么区别?
JWT解码只是将Base64Url编码的Header和Payload还原为可读的JSON格式,任何人都可以进行,不需要密钥。JWT验证则是使用密钥验证Signature的有效性,确认Token没有被篡改且确实由可信方签发。本工具仅提供解码功能,不验证签名。重要提示:JWT的Payload不是加密的,只是编码的,绝不能在JWT中存放敏感信息(如密码、银行卡号等)。
Q2: 为什么解码后中文显示乱码?
JWT标准使用UTF-8编码,如果解码后中文显示乱码,可能有以下原因:1) Token不是标准UTF-8编码的;2) Payload中的中文被额外加密或编码了;3) Token在传输过程中被损坏。请检查Token的来源和生成方式。本工具使用标准UTF-8解码,如果是非标准编码可能无法正确显示。
Q3: HS256和RS256有什么区别?哪个更安全?
HS256(HMAC-SHA256)是对称加密算法,使用同一个密钥进行签名和验证,计算速度快,适合单体应用。RS256(RSA-SHA256)是非对称加密算法,使用私钥签名、公钥验证,公钥可以公开分发,安全性更高,适合微服务、分布式系统等多方验证场景。一般来说,RS256比HS256更安全,因为不需要在验证方共享密钥。但HS256速度更快,实现更简单。选择哪种取决于使用场景和安全需求。
Q4: JWT存在安全风险吗?使用时要注意什么?
JWT本身是安全的,但使用不当会带来风险:1) 不要在Payload中存放敏感信息,因为Base64Url不是加密;2) 使用HTTPS传输,防止Token被窃取;3) 设置合理的过期时间(exp),减少被盗用的风险;4) 存储在HttpOnly Cookie中比localStorage更安全,可防止XSS窃取;5) 验证签名,确保Token未被篡改;6) 考虑使用刷新令牌(Refresh Token)机制,缩短访问令牌有效期。
Q5: 我的Token会被上传吗?隐私安全吗?
绝对安全。本JWT解码工具所有计算全程在浏览器本地独立完成,使用纯JavaScript实现,无需联网操作,全程不产生网络传输。您输入的JWT Token、解码结果等所有数据都不会发送、记录或缓存到任何服务器。关闭页面后所有数据即刻清空。您的Token和隐私完全由您掌控。
应用场景
| 应用场景 | 说明 |
|---|---|
| 接口调试 | 开发调试时查看JWT Token的内容和有效期 |
| 令牌校验 | 验证JWT Token的结构是否正确 |
| 问题排查 | 排查认证失败、Token过期等问题 |
| 学习理解 | 学习JWT结构和原理 |
| Payload查看 | 快速查看Token中的用户信息和权限 |
| 时间计算 | 查看Token的签发时间和过期时间 |