随机令牌生成器
为会话、密码重置、CSRF 和邀请码创建密码学安全的随机令牌。支持十六进制、Base64url、Base32 或字母数字,默认 256 位。
可选,例如 sk_live_ 或 myapp_。前缀让密钥易于识别,也更容易在泄露的代码中被检测到。
熵 256 位 · 每个值 64 个字符
使用 crypto.getRandomValues 在本地生成,不会发送或存储任何内容。请把密钥放在环境变量或密钥管理服务中,切勿写进源代码。
什么是 随机令牌生成器?
生成不可猜测的随机令牌,用于密码重置链接、邮箱验证、邀请码、CSRF 防护、会话 ID 或任何一次性密钥。默认是 32 个随机字节(256 位),显示为 64 个十六进制字符;你也可以切换为 URL 安全的 Base64url、Base32、Base64 或字母数字输出。
如何使用 随机令牌生成器
- 选择 格式:十六进制最常见,Base64url 更短,并且在 URL 中是安全的。
- 设置 随机字节数(字母数字格式则设置以字符计的 长度)。
- 选择要生成的 数量,点击 重新生成 获取新的一组。
- 复制令牌。
示例
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 生成。