JWT 解码 / 编码 / 签名
解析 Token、验证签名,也可以自己填写 Header 与 Payload 生成并签名新的 JWT。全部在浏览器本地完成,密钥不会上传。
带意图的直达链接(可复制分享):
把已有 Token 粘贴进来即可查看内容(Header / Payload / 签名段);需要确认 Token 有没有被改过,可在下方填入密钥或公钥就地验签。
粘贴 JWT Token 开始解析
各语言 JWT 示例代码
覆盖 9 种主流语言的常用 JWT 库,包含生成、解码、验签三类写法,可直接复制使用。
用当前 Token / 密钥替换示例占位符PASTE_YOUR_JWT_HERE
jsonwebtoken(Node.js 最常用)
HS256 签名 / 解码 / 验签全流程,RS256 只需换成密钥对并改 algorithm。
// 安装:npm install jsonwebtoken
const jwt = require('jsonwebtoken')
// ESM 写法:import jwt from 'jsonwebtoken'
const secret = 'your-256-bit-secret'
// 1. 生成(签名)Token
const token = jwt.sign(
{ sub: '1234567890', name: 'GEE 用户', admin: true },
secret,
{ algorithm: 'HS256', expiresIn: '2h' }
)
console.log(token)
// 2. 仅解码查看内容(不校验签名,别用它做鉴权)
console.log(jwt.decode(token))
// 3. 验证签名,并自动校验 exp / nbf
try {
const payload = jwt.verify('PASTE_YOUR_JWT_HERE', secret, { algorithms: ['HS256'] })
console.log('验证通过', payload)
} catch (err) {
// TokenExpiredError / JsonWebTokenError / NotBeforeError
console.error('验证失败', err.name, err.message)
}
// 4. RS256:私钥签名、公钥验签
// const token = jwt.sign(payload, privateKeyPem, { algorithm: 'RS256' })
// const data = jwt.verify(token, publicKeyPem, { algorithms: ['RS256'] })jose(浏览器 / Edge Runtime 通用)
基于 WebCrypto,可在浏览器、Cloudflare Workers、Vercel Edge 中直接使用。
// 安装:npm install jose
import { SignJWT, jwtVerify, decodeJwt } from 'jose'
const secret = new TextEncoder().encode('your-256-bit-secret')
// 1. 生成 Token
const token = await new SignJWT({ name: 'GEE 用户' })
.setProtectedHeader({ alg: 'HS256', typ: 'JWT' })
.setIssuedAt()
.setExpirationTime('2h')
.sign(secret)
// 2. 验证签名
const { payload, protectedHeader } = await jwtVerify('PASTE_YOUR_JWT_HERE', secret, {
algorithms: ['HS256']
})
console.log(payload, protectedHeader)
// 3. 只看内容不验签
console.log(decodeJwt(token))