JWT 生成・検証
HS256 署名 · 三段構造の解析 · exp/nbf/iat の有効状態 · 同じ鍵での検証
生成:Header + Payload + 密钥 → 三段式 token
密钥只存在于页面内存:不上传、不写 localStorage,刷新或关闭页面即消失。
使用前请先看清楚:本页适合什么、不适合什么
① 「验签通过」不等于「token 可信」。验签通过只证明「这个 token 的签名与你输入的密钥匹配」——也就是持有这把密钥的人产出了它。谁签发的(iss)、给谁的(sub/aud)、携带什么权限、有没有被滥用,页面都替不了签发服务背书。生产环境请走签发服务自己的校验逻辑。
② 本页只实现 HS256(对称密钥)。HS256 的签名与验签用同一把密钥:密钥一旦泄露,任何人都能伪造合法 token。真实系统普遍使用 RS256 / ES256 等非对称算法(公钥验签、私钥签发);本页不实现它们,遇到这类 token 会如实说「只能解析、无法验签」。
③ token 与密钥不上传、不留存。签名与验签由浏览器内置的 WebCrypto(HMAC-SHA256)在本地完成,页面不发起任何网络请求、不写 localStorage 或 cookie,刷新即清空;密钥不会被存到任何地方。
④ 本页不保管密钥、也不提供密钥管理。不要把生产密钥长期留在这类网页里;本页的定位是调试、联调与学习(看懂 token 结构、核对签名、检查有效期)。
什么是 JWT,这个 JWT 生成器 / 解析器能做什么
JWT(JSON Web Token)是三段用英文句点连接的字符串:Header.Payload.签名。Header 声明算法(如 HS256),Payload 携带声明(claims,如 sub 主体、exp 过期时间),签名是对「前两段拼接结果」用密钥做的 HMAC-SHA256 计算——任何一段被改动,签名都会对不上。三段各自用 base64url 编码,所以内容可以直接肉眼读出,JWT 不是加密格式,Payload 里的内容对所有人可见,不要把密码、证件号这类敏感数据写进 Payload。
本页做三件事:生成——编辑 Header 与 Payload 的 JSON、填写密钥,在浏览器里完成 HS256 签名并拼出标准 token(exp 支持按 1 小时 / 1 天 / 7 天 / 30 天快速填写);解析——粘贴任意 JWT,拆出三段、解码显示 JSON,并对 exp / nbf / iat 给出本地时间与「还剩多久过期 / 已过期多久 / 尚未生效」的状态提示;验签——用相同密钥重新计算签名,与 token 里的签名逐字节比对,告诉你匹配与否。
exp、nbf、iat 都是 Unix 时间戳(秒):exp 过期时间(之后应被拒绝)、nbf 生效时间(之前不算有效)、iat 签发时间。排查「token 为什么被拒」时,先解析看这三个值,再核对服务端时钟与签发参数。
为什么能做到不上传?签名与验签用的是浏览器内置的 WebCrypto(HMAC-SHA256),密钥与 token 全程只在本机内存里参与计算,页面不发起任何网络请求——你可以在开发者工具的 Network 面板核验(只会看到页面自身与统计脚本的请求)。唯一的限制:WebCrypto 只在安全上下文(https 或 localhost)开放,http 打开时生成与验签不可用,解析不受影响。
よくある質問
三つです。生成:Header と Payload の claims を JSON で編集し署名鍵を入力すると、ブラウザ内で HMAC-SHA256(HS256)署名を計算し標準の三パート方式 token を組み立てます。解析:既存 token を貼り付け Header / Payload / 署名の三つに分解し、デコード後 JSON と exp/nbf/iat などのローカル時刻・状態を表示。検証:同じ鍵で署名を再計算し token 内の署名と比較。すべてブラウザ内ローカル完結、登録不要です。
何も証明しません。示すのは「署名が入力した鍵と一致=その鍵を持つ者がこの token を生成した」だけ。信頼できるかは発行サービス次第です:誰が発行したか(iss)、誰向けか(sub/aud)、期限切れでないか(exp)、どんな権限を積むか——本ページはどれも保証できません。しかも HS256 は対称鍵アルゴリズム:同じ鍵を持つ者なら誰でも正当な署名を作れます。本番 token の検証は発行サービス自身の検証ロジック(RS256/ES256 等の非対称アルゴリズム含む)で;本ページはデバッグと学習用です。
exp は期限(この時刻以降 token は拒否されるべき)、nbf は有効開始(この時刻前は有効でない)、iat は発行時刻;いずれも秒単位の Unix タイムスタンプです。解析後は本地時刻への対応と現在時刻基準の位置(「残り何秒で期限」「何秒前に切れ」「まだ未発効」)を項目ごとに出し、有効期間窓が一目で分かります。
されません。token と鍵はブラウザ内ローカル計算(WebCrypto HMAC-SHA256)にしか使われず、リクエストは一切発さず、localStorage・cookie にも書きません、ページ更新で消えます。鍵はどこにも保存されず、ページを閉じれば本机にコピーも残りません。
ブラウザは暗号接口 crypto.subtle を安全コンテキスト(https か localhost)でしか開放せず、本ページは HMAC 署名と検証にそれを使っています。http で開くと生成と検証は無効化されページ上部に案内が出ます;解析機能はその接口に依存せず使えます。https に切り替えれば全機能が使えます。