# JWT 生成器

使用你自己的 JSON 声明创建带签名的 JSON Web Token。可选择使用共享密钥的 HS256、HS384 或 HS512，使用 RSA 私钥的 RS256 至 PS512，使用匹配 EC 密钥的 ES256 至 ES512，或使用 Ed25519 密钥的 EdDSA；密钥可采用 PEM 或 JWK 格式。生成器可添加 iat、exp 和 kid 标头，使用 jose 库进行签名，并在解码后的标头和载荷旁显示紧凑型令牌。

## 常见问题

### 可以使用哪些签名算法？

生成器支持使用共享密钥的 HS256、HS384 和 HS512，使用 RSA 私钥的 RS256、RS384、RS512、PS256、PS384 和 PS512，使用 P-256、P-384 或 P-521 曲线 EC 私钥的 ES256、ES384 和 ES512，以及使用 Ed25519 私钥的 EdDSA。所选算法会写入 alg 标头，typ 始终设为 JWT。

### 载荷中应输入什么？

请输入包含声明的 JSON 对象，例如 sub、name、iss、aud 或任意自定义成员。数组、字符串和其他非对象值会被拒绝，因为 JWT 载荷必须是 JSON 对象。声明的顺序和值都会按输入内容原样保留。

### 如何读取 HMAC 密钥？

对于 HS256、HS384 和 HS512，密钥会先移除首尾空白，再作为 UTF-8 文本使用。如果密钥是二进制数据，请以 JWK 格式粘贴，例如 {"kty": "oct", "k": "..."}，并将字节编码为 base64url；工具会改用解码后的字节。HMAC 算法不接受 PEM 密钥，因为将公钥用作 HMAC 密钥是一个常见错误。

### HS256 密钥应有多长？

RFC 7518 要求密钥长度至少与哈希输出长度相同，因此 HS256 需要 32 字节，HS384 需要 48 字节，HS512 需要 64 字节。为便于复现测试令牌，工具也会使用较短的密钥进行签名；但生产环境中的密钥应是较长的随机值，例如使用密码生成器生成的密钥。

### RSA、EC 和 EdDSA 支持哪些私钥格式？

请粘贴未加密的 PEM 私钥，格式可以是 PKCS #8（BEGIN PRIVATE KEY）、PKCS #1（BEGIN RSA PRIVATE KEY）或 SEC1（BEGIN EC PRIVATE KEY），也可以是包含 d 成员的私有 JWK。不支持读取加密的 PEM 文件和 OpenSSH 私钥。密钥必须与算法匹配，因此 ES384 需要 P-384 密钥，RSA 密钥则至少需要 2048 位。

### iat 和 exp 如何设置？

启用签发时间选项后，除非载荷中已有 iat 声明，否则 iat 会设为当前时间。过期时间大于 0 秒时，exp 会设为当前时间加上相应秒数，并覆盖载荷中的任何 exp。过期时间为 0 时，不会添加 exp，并会保留载荷中已有的 exp。

### kid 字段有什么用途？

非空密钥 ID 会写入 kid 标头，以便验证方从 JWKS 中选出正确的密钥。如果你粘贴 JWKS 作为签名密钥，kid 也会用于选择集合中为令牌签名的密钥。JWK 转换器和密钥生成器会显示 RFC 7638 指纹，可用作 kid。

### 结果包含哪些内容？

你会得到紧凑令牌、算法、密钥 ID、UTC 中的签发时间和到期时间，以及已签名的准确标头和载荷 JSON。请从第一个区块复制令牌。之后可以用 JWT 解码器再次解码，或用 JWT 验证器检查。

### 我的机密或密钥会被存储吗？

不会。机密或私钥只会随签署令牌的请求传输，在内存中使用一次，绝不会记录或保存。即便如此，实验时也请使用测试密钥；除非你控制服务器，否则切勿将生产签名密钥粘贴到任何网络工具中。

### 有文件大小限制吗？

载荷最多可包含 65,536 个字符，密钥最多可包含 65,536 个字符，kid 最多可包含 256 个字符。到期值范围为 0 到 315,360,000 秒，即十年。超出限制的输入会被拒绝，并提示具体字段。

在这里投放广告？

[给我们发邮件](mailto:hi@dennn.is?subject=%E5%9C%A8%20OneClick%20Pro%20%E4%B8%8A%E6%8A%95%E6%94%BE%E5%B9%BF%E5%91%8A)

[广告 适用于 WordPress 的智能体就绪型插件套件。](https://sleekwp.com/?ref=oneclickpro)
