随机令牌生成器

为会话、密码重置、CSRF 和邀请码创建密码学安全的随机令牌。支持十六进制、Base64url、Base32 或字母数字,默认 256 位。

可选,例如 sk_live_ 或 myapp_。前缀让密钥易于识别,也更容易在泄露的代码中被检测到。

输出

熵 256 位 · 每个值 64 个字符

使用 crypto.getRandomValues 在本地生成,不会发送或存储任何内容。请把密钥放在环境变量或密钥管理服务中,切勿写进源代码。

什么是 随机令牌生成器?

生成不可猜测的随机令牌,用于密码重置链接、邮箱验证、邀请码、CSRF 防护、会话 ID 或任何一次性密钥。默认是 32 个随机字节(256 位),显示为 64 个十六进制字符;你也可以切换为 URL 安全的 Base64url、Base32、Base64 或字母数字输出。

如何使用 随机令牌生成器

  1. 选择 格式:十六进制最常见,Base64url 更短,并且在 URL 中是安全的。
  2. 设置 随机字节数(字母数字格式则设置以字符计的 长度)。
  3. 选择要生成的 数量,点击 重新生成 获取新的一组。
  4. 复制令牌。

示例

输入
Format Base64url, 32 random bytes, How many 1
输出
81u4aRrBPjZmdbKks_Gh_FDt4AKsSY4FQllDH0mkThk

256 位,43 个字符。内容是随机的,你得到的结果会不同。

何时使用 随机令牌生成器

适合任何“持有该值即获得访问权限、且不能被猜到”的场合。需要在值内部携带结构或有效期(声明、签名)时,请改用 JWT;对于不需要保密的数据库 ID,UUID 更简单。

随机令牌生成器 的工作原理

工具向浏览器的 CSPRNG(crypto.getRandomValues)请求 N 个随机字节并编码:十六进制每个字节用两个字符,Base64url(RFC 4648 §5)使用不带填充的 A-Z a-z 0-9 - _,Base32 使用 A-Z 2-7。熵一行显示随机性的位数(8 × 字节数)和最终长度,低于 128 位时会发出警告。

常见用例

  • 密码重置和邮箱验证链接
  • 会话标识符和 CSRF 令牌
  • 邀请码或一次性下载码
  • Webhook 密钥和共享签名密钥

安全提示

请像对待密码一样对待令牌:设置有效期,使用后使其失效,并尽可能只在服务器上存储哈希。

常见问题

选十六进制还是 Base64url?

相同字节数下,两者包含的随机性相同。Base64url 约短三分之一(32 字节为 43 个字符对 64 个字符),并且在 URL 中是安全的;十六进制则更易于阅读和比较。

需要多少字节?

16 字节(128 位)是安全令牌通常的最低要求;32 字节(256 位)则留有充足的余量。

在浏览器中生成令牌安全吗?

安全。crypto.getRandomValues 是密码学安全的生成器,并且不会向服务器发送任何内容。对于你的应用向用户签发的令牌,请在服务器上用同类的 CSPRNG 生成。

推荐的下一步

探索更多分类