ZH
我的工具

JWT 编码器/生成器(HS256、RS256、ES256)

创建并签名 JSON Web Token:用密钥生成 HS256/384/512,或用 PEM 私钥生成 RS、PS、ES 256/384/512。可添加 iat 和 exp,并验证结果。

"alg" 始终设为上面所选的算法。
密钥只在本页面中使用。可以的话请使用临时密钥或测试密钥。
我的工具 →
广告

JSON Web Token 把声明——用户是谁、令牌何时过期——放在一个由签发者签名的紧凑字符串里。这个编码器在你的浏览器中构建并签名令牌:用共享密钥生成 HS256/384/512,或用 PEM 或 JWK 形式的私钥生成 RS、PS、ES 256/384/512。它可以把当前时间写入 iat,把若干分钟后的时间写入 exp,并在展示之前验证它生成的每一个令牌。

使用方法

  1. 选择你的 API 期望的算法。
  2. 编辑头部和载荷 JSON;"alg" 会自动填好。
  3. 输入共享密钥,使用 RS、PS 或 ES 算法时粘贴私钥。
  4. 可选:把 iat 设为现在,并以分钟设置过期时间,然后复制令牌。

计算公式

token = Base64URL(header) + "." + Base64URL(payload) + "." + Base64URL(signature over the first two parts)

HS 算法使用 SHA-256/384/512 的 HMAC。RS 使用 RSASSA-PKCS1-v1_5,PS 使用盐长度与哈希相同的 RSASSA-PSS,ES 使用 P-256、P-384 或 P-521 上的 ECDSA,签名写成原始的 r‖s(RFC 7518)。JSON 以紧凑形式序列化,并保留你的键顺序。

示例

用默认头部 {"alg":"HS256","typ":"JWT"}、载荷 {"sub":"1234567890","name":"John Doe","iat":1516239022} 和密钥 "your-256-bit-secret",令牌为 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIi….SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c——这就是著名的 jwt.io 示例。

常见问题

在这里粘贴私钥安全吗?

签名在你的浏览器中通过 Web Crypto API 完成,不会发送任何内容。但生产环境的签名密钥仍应视为机密:这里请使用测试密钥,真实令牌请在服务器上签名。

为什么 HS256 会拒绝 PEM 密钥?

HS256 需要共享密钥。把公钥当作 HMAC 密钥使用是“算法混淆”攻击,任何知道公钥的人都能伪造令牌,所以编码器会拒绝。密钥对请选择 RS256 或 ES256。

为什么我的 ES256 令牌每次都不同?

ECDSA 和 RSA-PSS 的每次签名都使用新的随机数。每个版本都有效;HS 和 RS 令牌是确定性的,始终相同。

应该使用哪种算法?

如果同一个服务既签发又校验令牌,HS256 很简单。当其他方必须能校验令牌但不能创建令牌时,请使用 RS256 或 ES256。

资料来源

最后更新:

引用此工具
APA

kakaoCalc. (2026, November 8). JWT 编码器/生成器(HS256、RS256、ES256). https://kakao.mobile/zh/tools/jwt-encoder/

MLA

“JWT 编码器/生成器(HS256、RS256、ES256).” kakaoCalc, 8 Nov. 2026, kakao.mobile/zh/tools/jwt-encoder/.

广告