跳到正文
SPCX Tools

JWT 编码器

在浏览器中即时生成并签名基于 HMAC 的 JSON Web Token (JWT)。

本地运行——文件不会离开你的设备

正在加载工具…

如何使用JWT 编码器

  1. 1选择您首选的 HMAC 签名算法(HS256、HS384 或 HS512)。
  2. 2编辑 JSON 负载(Payload)。使用快捷按钮为 iat 和 exp 等标准声明插入当前时间。
  3. 3输入您的密钥(Secret)。如果您的系统使用 Base64 编码的密钥,请勾选 Base64 复选框。
  4. 4签名后的 Token 会随您的输入自动更新。点击“复制”即可获取最终的 JWT。

安全的本地 JWT 编码器

这款 jwt 编码器 可让开发者直接在浏览器中快速编写、修改和签名 JSON Web Token。无论您是在构建身份验证流程、测试 API 接口,还是调试微服务,都能即时生成有效的 Token,无需编写自定义脚本,也不会将凭证暴露给第三方服务器。

由于本工具依赖浏览器原生的 Web Crypto API,所有数据处理和加密签名均完全在您的设备上本地完成。您的 JSON 负载和密钥绝不会被上传、存储或记录。这种本地优先的机制确保了在线签名 JWT 的安全性,即使处理敏感的开发或测试环境凭证也安全无忧。

如何生成 JWT 令牌

要生成 JWT 令牌,你需要三个组成部分:头部(Header,用于定义算法)、载荷(Payload,包含你的数据)以及密钥(Secret Key,用于保障令牌安全)。

首先,选择你要使用的算法。本工具是一个强大的 HS256 JWT 生成器,同时也支持 HS384 和 HS512。这些都是对称 HMAC 算法,这意味着签名和后续验证令牌时使用的是完全相同的密钥。数字越大(例如 512),生成的哈希值就越大,加密安全性也更高,代价是令牌字符串会稍长一些。

接下来,在提供的文本框中定义你的载荷。载荷必须是有效的 JSON 格式。当你编辑 JSON 或更新密钥时,工具会实时重新计算签名;如果 JSON 结构存在语法错误,也会立即给出提示。设置好载荷和密钥后,即可复制最终生成的令牌,并将其用于应用程序的 Authorization 请求头或 Cookie 中。

生成 Token 的常见应用场景

在现代 Web 开发中,手头有一个可靠的 JWT 生成器是必不可少的。开发者经常在各种测试和调试场景中使用此工具:

测试 API 接口: 在使用 Postman 或 Insomnia 等 API 客户端时,通常需要一个有效的 Bearer Token 来访问受保护的路由。您无需运行整个前端应用来登录并获取 Token,只需在此处手动生成一个包含特定用户 ID 和角色的 Token 即可。

调试身份验证逻辑: 如果您的后端拒绝接受 Token,手动生成 Token 有助于定位问题。您可以借此验证问题是否源于密钥错误、Payload 格式不正确或签名算法不匹配。

构造边界情况: 测试后端如何处理过期的 Token、缺失的 Claim 或未授权的角色对于安全性至关重要。您可以在此处轻松修改 JSON Payload 来构造这些边界情况,确保服务器返回正确的 HTTP 状态码。

管理时间戳与声明

JSON Web Token 使用特定字段(称为“声明”或 claims)来传递有关 Token 生命周期及其代表的用户信息。最常见的时间相关声明是 iat(签发时间)和 exp(过期时间)。这两个声明都需要 Unix 时间戳,即自 1970 年 1 月 1 日起经过的秒数。

在测试时手动计算这些时间戳非常繁琐。为了提高效率,本工具在 Payload 编辑器上方提供了快捷按钮。

  • 点击 iat = now 可立即使用当前 Unix 时间填入或更新 iat 字段。
  • 点击 exp = +1h 或 exp = +24h 会自动计算未来的时间戳,并相应地更新 exp 字段。

这能确保您生成的 Token 立即生效,避免被服务器的时间验证逻辑过早拒绝。

处理 Base64 密钥

在线签发 JWT 时,处理密钥编码是一个容易踩坑的地方。许多后端系统和教程建议为 HMAC 密钥生成一个高强度的随机字节数组,并将其以 Base64 字符串的形式存储在环境变量中。

如果你的服务器在签发或验证 Token 前会将该 Base64 字符串解码为原始字节,那么直接将 Base64 字符串粘贴到普通的生成器中会导致签名无效。因为生成器会把 Base64 字符当作纯文本处理,从而导致签名不匹配。

要解决这个问题,只需勾选 密钥为 Base64 编码(Secret is Base64 encoded)选项。工具会在进行 HMAC 哈希计算前,将密钥字符串解码为原始字节,确保生成的签名与你的后端环境完全一致。

了解 JWT 结构

生成 Token 后,输出结果会以不同颜色进行高亮区分,帮助您直观理解其结构。标准的 JWT 由三个部分组成,各部分之间用英文句号(.)分隔:

  1. 头部(红色): 包含 Token 的元数据,主要是签名算法(例如 {"alg":"HS256","typ":"JWT"})。该部分会根据您选择的算法自动生成,并进行 Base64-URL 编码。
  2. 载荷(蓝色): 实际的 JSON 数据,同样经过 Base64-URL 编码。任何人截获 Token 后都能轻松读取这部分内容,因此切勿在载荷中存放密码或高度敏感的数据。
  3. 签名(绿色): 对编码后的头部和载荷进行加密哈希处理,并使用您的密钥进行签名。这能确保 Token 在传输过程中未被篡改。

如果您已有 Token,且想在没有密钥的情况下查看其内容,可以将其粘贴到我们的 JWT 解码器 中,安全地查看头部和载荷信息。

常见问题

本工具支持哪些算法?
本工具目前支持基于 HMAC 的算法:HS256(HMAC with SHA-256)、HS384 和 HS512。这些是对称加密算法,即签名和验证 token 使用的是同一个密钥。
我的密钥会发送到服务器吗?
不会。所有加密签名过程均使用 Web Crypto API 在您的浏览器中本地完成。您的 JSON payload 和密钥绝不会离开您的设备,因此这是一种非常安全的测试 token 生成方式。
Base64 复选框有什么作用?
在许多后端框架中,JWT 密钥通常以 Base64 编码字符串而非纯文本形式存储。勾选此项会在应用 HMAC 算法前,将您输入的密钥解码为原始字节,从而确保生成的签名与服务器端的预期完全一致。
时间按钮是如何工作的?
iat(签发时间)和 exp(过期时间)按钮会在您的 JSON payload 中插入标准的 Unix 时间戳(自 1970 年 1 月 1 日起经过的秒数)。这样您就无需手动查找或计算当前的 epoch 时间。
为什么我在服务器上验证 token 时提示无效?
最常见的原因包括密钥不匹配、算法错误或密钥的编码方式不一致。请确保您使用的是完全相同的密钥字符串,并检查您的服务器在签名之前是否需要先对密钥进行 Base64 解码。