JWT 生成器
使用 HS256/384/512、RS、PS、ES 或 EdDSA 创建已签名的 JSON Web Token。可编辑载荷、设置 exp 和 iat、生成密钥或密钥对,全部在浏览器中完成。
随机字节数至少应与哈希长度相同(HS256 为 32 字节)。短密码可被离线暴力破解。
什么是 JWT 生成器?
JWT 生成器可以把任意 JSON 载荷签名为紧凑格式的 JSON Web Token。它支持 HMAC(HS256/384/512)、RSA(RS256/384/512)、RSA-PSS(PS256/384/512)、ECDSA(ES256/384/512)和 EdDSA(Ed25519),一键即可添加 iat 和 exp 声明,还能生成随机密钥或密钥对,其公钥可用于验证。
如何使用 JWT 生成器
- 选择算法。
- 编辑载荷 JSON;用按钮把 iat 设为当前时间,或把 exp 设为一小时或一天之后。
- 输入密钥(HS*)或 PKCS#8 PEM / JWK 私钥,也可以点击“生成随机密钥”或“生成密钥对”。
- 可选地设置密钥 ID(kid),然后点击“签名令牌”,并复制令牌(对于非对称算法还可复制公钥)。
示例
HS256, payload {"sub":"1"}, secret your-256-bit-secret eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxIn0.rTCH8cLoGxAm_xw68z-zXVKi9ie6xJn9tnVWjd_9ftE
何时使用 JWT 生成器
适合为 API 开发创建测试令牌、复现缺陷或学习 JWT 签名的原理。在生产环境中,请从你的认证服务器签发令牌,让密钥保存在密钥库中;切勿把生产环境的私钥粘贴到网站上。
JWT 生成器 的工作原理
签名使用基于浏览器 Web Crypto API 的 jose 库。头部为 {"alg": …, "typ": "JWT"} 加上可选的 kid;头部和载荷被序列化为 JSON,经 Base64URL 编码后签名。HMAC 密钥按 UTF-8 字节使用,勾选相应选项时则按 Base64/Base64URL 解码。生成的 HMAC 密钥是与哈希长度相符的 32/48/64 个随机字节;密钥对由 Web Crypto 创建,并导出为 PKCS#8 和 SPKI PEM。
常见用例
- 创建一个已过期的令牌,测试 API 对 401 的处理。
- 生成 RS256 密钥对和令牌,测试基于 JWKS 的验证器。
- 为本地开发签发带自定义声明的令牌。
- 演示 HS256 与 ES256 签名的区别。
安全提示
测试时请使用一次性密钥。过短或容易猜到的 HMAC 密钥,可以被人根据用它签名的任意令牌离线暴力破解。
常见问题
我应该选哪种算法?
如果由同一个服务签发并验证令牌,且可以保管共享密钥,用 HS256。如果其他方必须用公钥验证令牌,用 RS256、ES256 或 EdDSA。
为什么我的 RSA 密钥被拒绝?
以 BEGIN RSA PRIVATE KEY 开头的密钥是 PKCS#1 格式。请用 openssl pkcs8 -topk8 -nocrypt -in key.pem 把它转换为 PKCS#8(BEGIN PRIVATE KEY)。
生成的密钥会被保存吗?
不会。它们只在页面中存在,直到你离开页面。