JWT工具
FAQ
什么是 JWT?
JWT(JSON Web Token)是一种紧凑、URL 安全的令牌格式,广泛用于身份认证、授权以及系统之间安全传输数据。 JWT 可以通过数字签名来验证内容完整性,并帮助检测令牌是否被篡改。
JWT 的三部分分别是什么?
JWT 由三个使用点(.)分隔的 Base64URL 编码部分组成。
- Header(头部):包含令牌类型和签名算法等元数据。
- Payload(载荷):包含用户信息和其他声明(Claims)。
- Signature(签名):用于验证令牌内容是否被修改。
支持哪些签名算法?
当前工具支持以下 JWT 签名算法:
- HS256、HS384、HS512(HMAC)
- RS256、RS384、RS512(RSA)
对于 HMAC 算法,请输入签名时使用的 Secret Key;对于 RSA 算法,请输入 PEM 格式的公钥。
iat、nbf 和 exp 分别是什么意思?
JWT 中常见的时间相关字段包括:
- iat(Issued At):令牌签发时间。
- nbf(Not Before):令牌生效时间。
- exp(Expiration Time):令牌过期时间。
本工具会自动将这些 Unix 时间戳转换为可读时间,并检测令牌是否已过期或尚未生效。
不输入密钥也能解码 JWT 吗?
可以。
- JWT 的 Header 和 Payload 本质上只是 Base64URL 编码的数据。
- 解码时不需要 Secret Key 或公钥。
- 只有在验证签名时才需要提供对应的验证密钥。
如何验证 JWT 签名?
验证签名的步骤如下:
- 将 JWT 粘贴到输入框中。
- 输入对应的验证密钥。
- 点击“解码&验签”。
HS256、HS384、HS512 需要输入签名时使用的 Secret Key;RS256、RS384、RS512 需要输入 PEM 格式的 RSA 公钥。
“签名验证失败”是什么意思?
出现该提示通常有以下几种原因:
- 输入的验证密钥不正确。
- JWT 的 Header 或 Payload 被修改过。
- JWT 实际使用的签名算法与 Header 中声明的不一致。
- 提供的 RSA 公钥与签发令牌时使用的私钥不匹配。
JWT 会上传到服务器吗?
不会。
- JWT 解码和签名验证均在浏览器本地完成。
- JWT 内容和验证密钥不会上传到服务器。
- 敏感令牌、密钥和认证数据始终保留在你的设备上。