JWT 编解码JWT Sign / Decode
在线签发与解析 JSON Web Token:HS256 / HS384 / HS512 一键签名,token 三段结构自动拆解,exp 过期状态一目了然。基于 Web Crypto API,密钥与 token 全程不上传。
工具介绍
3 段详细说明JWT 签发与解析是调试登录态的一站式工具:签发(生成 token)与解析(拆解三段)双模式一键切换。签发支持 HS256 / HS384 / HS512 对称算法,粘贴 Payload 即得 token;解析把 token 拆成 Header、Payload、Signature 三段展示,exp 过期状态一目了然。
所有运算都基于浏览器原生 Web Crypto API,在浏览器内存中完成,密钥与 token 不上传任何服务器。零依赖、零打包,签发与解析均在毫秒级完成。
相比 jwt.io 等在线工具,本工具无第三方 CDN、无追踪、无登录。点「交换」把签发结果送回输入框反向验证,签发 → 解码 → 改字段重签,一次调试闭环搞定。
基础知识 · JWT 三段结构
RFC 7519JWT(JSON Web Token)是跨服务的无状态登录凭证。按 RFC 7519 定义,它由三段 Base64URL 字符串用英文句点连接而成:header.payload.signature,签名保证前两段内容未被篡改。
three parts三段式结构. 分隔的三段字符串:header.payload.signature。前两段是 Base64URL 编码的 JSON,第三段是签名。任何一段缺失或为空都不是合法 JWT。headerHeader · 头部{"alg":"HS256","typ":"JWT"}。alg 决定签名方式(HS = HMAC 对称,RS/ES = 非对称),验证方必须校验它是否符合预期,防止 alg=none 替换攻击。payloadPayload · 载荷(Claims)iss(签发方)、sub(主体)、aud(受众)、exp(过期,秒级时间戳)、nbf、iat、jti。其余字段自定义,如 name、role。signatureSignature · 签名header.payload 前两段用密钥签名,保证内容未被篡改。任何一方改动 payload,验证方重算签名立刻对不上。签发用私钥,验证用公钥(非对称)或同一密钥(对称)。base64urlBase64URL 编码+ → -,/ → _,并去掉 = 填充。所以 JWT 可以直接放进 URL、Cookie、Header 而无需再转义。signed ≠ encrypted签名 ≠ 加密HS256(共享密钥、实现简单、性能高);多服务分布式(鉴权服务签发、业务服务只验证)用 RS256(私钥签发、公钥验证),更安全但开销大 100 倍以上。使用说明
4 步快速入门使用场景
5 个真实案例把线上 token 粘进解码模式,直接看用户 ID、角色、过期时间,定位「莫名掉线」比 grep 日志快 10 倍。
后端接口没就绪时,签发模式手工构造带 role / exp 的 token,前端联调权限逻辑不等接口。
故意把 exp 设成过去的时间戳签发,验证前端 401 处理与 token 刷新流程是否正确。
对比签发方与验证方的密钥、算法是否一致;payload 是否被中间件意外改写导致签名对不上。
示例按钮现场演示「改一个字符 → 签名立刻失效」,比看 RFC 7519 直观百倍。
常见问题
10 个问答JWT 签发和解析是安全的吗?数据会上传吗?
安全。签发用浏览器原生 Web Crypto API,解析用纯 JS,全程在本机内存完成,密钥与 token 不发送到任何服务器。可断网使用,关闭网络后仍能正常签发。
支持哪些算法?
签发支持 HS256 / HS384 / HS512(HMAC + SHA-256/384/512 对称签名)。RS256 / ES256 等非对称算法需要 PEM 密钥管理,计划在后续版本提供。
签发的 token 能直接用于生产环境吗?
签发逻辑本身是标准 HMAC 签名,与后端 openssl / jsonwebtoken 库结果一致,可以用于联调验证。但生产环境的密钥管理、过期策略、刷新机制应在服务端完成,不要依赖前端工具签发线上 token。
「已过期」徽章是怎么判定的?
解析成功后,工具读取 Payload 里的 exp 字段(秒级 Unix 时间戳)与本地时间对比。仅作参考——生产环境应在服务端校验 exp,并注意客户端时钟偏差。
HS256 和 RS256 怎么选?
单服务签发+验证用 HS256(共享密钥、实现简单、性能高);多服务分布式(鉴权服务签发、多个业务服务只验证)用 RS256(私钥签发、公钥验证)。后者更安全但开销大 100 倍以上。
为什么解析出来是乱码或报「不是合法 JSON」?
常见原因:① token 复制不完整(缺一段);② 带入了换行或空格;③ payload 被特殊字符破坏。合法 JWT 是三段 Base64URL 用英文句点 . 分隔,前后不应有其他字符。
Payload 里的信息别人能看到吗?
能。Payload 只是 Base64URL 编码,不是加密,任何拿到 token 的人都能直接读出全部字段。JWT 保证的是「内容没被篡改」,不是「内容保密」。敏感数据要么不放,要么用 JWE 加密。
签名验证失败可能是什么原因?
常见原因:① 密钥输错;② 密钥前后多了空格 / 换行 / 制表符;③ 算法不匹配(如 alg=HS256 用了 RSA 公钥);④ token 被篡改。前三种自查配置,第四种应立即作废 token 并通知用户重发。
移动端能用吗?
支持。移动端输入/输出自动垂直堆叠,操作按钮自适应布局。手机上可粘贴微信 / 飞书里收到的 token,一键解析查看。
exp 时间戳的单位是什么?
秒。RFC 7519 规定 exp / iat / nbf 都是 NumericDate(秒级 Unix 时间戳)。JavaScript 里用 Math.floor(Date.now() / 1000) 生成,直接用 Date.now()(毫秒)会得到一个「几万年后才过期」的 token。
相关工具
开发者分类数据来源
隐私优先Web Crypto API(HMAC + SHA-256/384/512),签名结果与 openssl / jsonwebtoken 等标准实现完全一致;解析为纯 JS 的 Base64URL 解码 + JSON.parse,无 WASM、无 polyfill。算法依据 RFC 7519(JWT)/ RFC 7515(JWS)。