Token
粘贴或输入 JWT,自动解析三段结构操作
—
—
—
—
—
—
一个 JWT(JWS)是用点号分隔的三段:Header、Payload、Signature,前两段是 Base64URL 编码的 JSON,第三段是签名。本工具把这三件事分开做:解析 Token 只把三段解开并格式化展示,谁都能自己改完再编码,所以解析成功不代表签名有效;生成签名 用你给的密钥按所选算法算出签名;验证签名 才用密钥重算并比对,同时逐项检查 exp、nbf、iat、iss、aud 等标准声明,每一项都给出通过与失败原因。
算法分两类,页面会按所选算法切换对应的密钥输入:HS256 / HS384 / HS512 是 HMAC 对称算法,签发与验证用同一串共享密钥;RS256 / RS384 / RS512、PS256 / PS384 / PS512、ES256 / ES384 / ES512 是非对称算法,生成签名需要 PKCS#8 私钥(-----BEGIN PRIVATE KEY-----),验证需要 SPKI 公钥(-----BEGIN PUBLIC KEY-----)。老式的 -----BEGIN RSA PRIVATE KEY----- 会自动转换成 PKCS#8;密钥与算法不匹配、缺少密钥、密钥解析失败都会给出明确原因,而不是笼统地说失败。
时间声明按当前本机时间检查:exp 超过即判为已过期,nbf 早于它即判为尚未生效,都可以设置允许的时钟偏差秒数来容忍服务器之间的时间差;没有 exp 时会明确提示该 Token 永不过期。签名与校验全部调用浏览器内置的 Web Crypto,不引入任何第三方库、不依赖外部 CDN,页面没有接口,Token 与密钥不上传、不写进 localStorage、URL 或日志,刷新即消失。
不代表。解析只是把三段 Base64URL 解开并显示出来,任何人都能改 Payload 后重新编码;只有「验证签名」用正确密钥算出一致的签名,才能说明内容没被篡改且确实由持有密钥的一方签发。页面把解析、生成、验证分成三件事,解析结果旁也会明确提示尚未验证签名。
支持 HMAC 系列的 HS256、HS384、HS512,RSA 的 RS256、RS384、RS512 与 PS256、PS384、PS512,以及 ECDSA 的 ES256、ES384、ES512。签名与验证全部使用浏览器内置的 Web Crypto,不引入任何第三方库,也不依赖外部 CDN。
HMAC 系列填一串共享密钥即可;RS、PS、ES 系列需要 PKCS#8 格式的私钥(以 -----BEGIN PRIVATE KEY----- 开头),验证时填 SPKI 格式的公钥(以 -----BEGIN PUBLIC KEY----- 开头)。老式的 -----BEGIN RSA PRIVATE KEY----- 会自动转换成 PKCS#8,EC 私钥请先转成 PKCS#8 再粘贴。
exp 是过期时间,当前时间超过它就判为已过期;nbf 是生效时间,当前时间早于它就判为尚未生效。两者都可以设置允许的时间偏差秒数,用来容忍服务器之间的时钟差异。没有设置 exp 时会明确提示该 Token 永不过期,而不是当作通过。
不会。解析、生成与验证都在浏览器里用 Web Crypto 完成,页面没有任何接口,不发出携带 Token 或密钥的网络请求,也不会把它们写进 localStorage、URL 或日志。刷新页面后输入框里的内容全部消失。
不能。JWT 的 Header 和 Payload 只是 Base64URL 编码,不是加密,任何人拿到 Token 都能直接解出原文;只有 JWE 才是加密令牌。所以不要把密码、身份证号、令牌等敏感信息放进未加密的 JWT,需要保密的数据请改用 JWE 或只放不敏感的标识。