JWT 解码
JWT Decoder
解出头部和载荷,按本地时间显示过期时刻,并用你给的密钥验证签名。
解码一个 JSON Web Token——头部、载荷和签名——解释每个标准声明的含义,并能用共享密钥、粘贴的密钥或签发方的 JWKS 验证签名。一切在标签页里发生:令牌本身从不发送到任何地方。
令牌留在这个标签页里。
解码和验签都在你的浏览器里用 WebCrypto 完成。什么都不上传,这个页面也没有服务端。它唯一可能发出的请求,是对你自己输入的那个 JWKS URL 做一次 GET,那个请求带的只有这个 URL,绝不会带上令牌或密钥。
令牌
开头的 `Bearer ` 会替你去掉。
怎么用
粘贴令牌
开头的 `Bearer ` 会替你去掉。头部、载荷和签名立刻拆开——没有按钮要按。
先读状态行
已过期、尚未生效,或者在有效期内——按你的时钟计算。载荷表里的时间声明同时显示为 ISO 时间戳、你的本地时间和原始的 epoch 秒数。
要紧的话验证签名
HS256/384/512 用共享密钥,非对称算法用 JWKS URL 或粘贴的密钥。解码证明不了任何真实性——只有签名检查才能。
常见问题
把生产环境的令牌粘到这里安全吗?
令牌在你的浏览器里解码,从不传输——这个页面没有服务端。它唯一可能发出的请求是对你输入的 JWKS URL 的一次 GET,携带的只有那个 URL。即便如此,一个在浏览器标签页里的令牌就是一个在屏幕上的令牌,所以要像对待密码一样对待它。
任何人都能读我的载荷?
是的。JWT 是签名的,不是加密的——载荷是 Base64URL,那是一种编码。永远不要把你不会放进 URL 的东西放进 JWT。这个页面粘贴一次演示的正是这一点。
签名验证通过了——这说明令牌是好的吗?
它说明令牌是由持有那把密钥的人签的,而且此后没有被改过。它对过期、受众、签发方或吊销什么都没说。状态行覆盖过期;其余的是你应用程序的活。
为什么它检查不了我的 ES256K 或 Ed448 令牌?
因为验证用的是浏览器的 WebCrypto,那些曲线不在里面。HS、RS、PS 和 ES 的 256/384/512 加上 Ed25519 是浏览器能做的;其他的报告为无法检查,而不是悄悄通过。
可以从这些接进来
Base64 编码解码
Base64 Encoder & Decoder
对文本和文件做 Base64 与 Base64URL 编解码,UTF-8 处理正确。
JWKS 签名验证
JWKS Verifier
拉取 JWKS 端点,按 kid 选出对应的密钥,验证令牌的签名和标准声明。
HMAC 生成
HMAC Generator
按选定的哈希算法和密钥编码算出消息的 HMAC,用来核对 webhook 签名。
Unix 时间戳转换
Unix Timestamp Converter
在 epoch 秒、毫秒、ISO 8601 和人读日期之间按任意时区互转。
接下来
这些工具吃得下当前工具的产出,结果可以直接送过去。
Base64 编码解码
Base64 Encoder & Decoder
对文本和文件做 Base64 与 Base64URL 编解码,UTF-8 处理正确。
Unix 时间戳转换
Unix Timestamp Converter
在 epoch 秒、毫秒、ISO 8601 和人读日期之间按任意时区互转。
JWKS 签名验证
JWKS Verifier
拉取 JWKS 端点,按 kid 选出对应的密钥,验证令牌的签名和标准声明。
密钥对生成
Key Pair Generator
生成 RSA、ECDSA 或 Ed25519 密钥对,导出为 PEM、JWK 或 OpenSSH。
JSON ⇄ CSV 互转
JSON ⇄ CSV
把嵌套 JSON 按点路径列名拍平成列,或者从表格重新拼回对象。
JSON 对比
JSON Diff
按结构比较两份 JSON,忽略键的顺序,报出新增、删除和改动的路径。