—关于 令牌生成器
很多场景需要一段无法被猜测的随机字符串:会话 token、API Key、密码重置链接、CSRF 防护值等。本工具用浏览器的 crypto.getRandomValues 这一密码学安全随机源生成令牌,而非 Math.random,确保不可预测。你可以自定义长度、字符集(字母数字、Hex、URL 安全 Base64 等),一次批量生成多条。所有随机数都在本地产生,不经过网络,生成后立即可用于配置文件或环境变量。批量生成的结果可一键复制或整理成环境变量格式,接入 CI 与容器配置时省去手工录入;也适合为邀请码、兑换码与一次性下载链接生成难以枚举的标识,建议在服务端同样使用密码学安全随机源并配置有效期与轮换策略,降低长期凭据泄露后的回收难度。
生成随机令牌用于接口密钥、会话标识、一次性链接与防重放随机数时,最关键的不是长度,而是随机源。用数学库的伪随机函数生成的字符串看似杂乱,但它由可预测的种子驱动,只要攻击者知道种子或其推算方式,整个序列都能被复现,这样的令牌等同于没有令牌。 因此正确的做法是使用操作系统或浏览器提供的密码学安全随机源,它对每个字节的取值不可预测,且不依赖可推算的种子。在此基础上再考虑长度与字符集:长度决定穷举难度,字符集决定每个字符携带的信息量,两者相乘才是总的搜索空间;用较少字符集换取较长的长度,通常比用大字符集换短长度更划算,因为短令牌在人工转录时更容易出错。 使用要点:URL 中使用的令牌必须选择对地址安全的字符集,否则会被当作路径分隔符或查询参数分隔符而截断;需要长期校验的令牌应存储其哈希而不是明文,这样即使数据泄露也无法直接使用;一次性链接要同时带有效期与使用次数限制,仅靠随机性无法防止链接被转发后重复使用。生成与校验之间要有审计记录,便于事后追溯异常使用。 边界与限制:随机性只解决「猜不到」,不解决「被拿走」——日志打印、浏览器历史、转发的邮件都能让一个强随机令牌泄露,因此传输必须加密、日志必须脱敏、令牌必须设置较短有效期。此外不要用同一个令牌承担多种用途,会话与接口密钥混用会让吊销其中一个变得困难。生成端的随机源质量也要确认,某些受限环境中的随机源可能不可靠,此时应由服务端统一下发。 数据与隐私:本工具生成的是可用于真实系统的凭据,属于高敏感数据。生成在浏览器内完成,不上传任何内容;但更稳妥的做法是让服务端在受控环境中生成并直接写入存储,避免经手复制粘贴环节。
误用有两类。一是用数学库的伪随机函数生成令牌——由可推算种子驱动的字符串看似杂乱,但整个序列可被复现,等同于没有令牌;必须使用密码学安全随机源。二是把同一个令牌复用于多种用途,会话与接口密钥混用会让吊销其中一个变得困难,也扩大了泄露影响面。
实现原理
强度取决于随机源而非长度:由数学库伪随机函数驱动的字符串看似杂乱,但只要种子可推算,整个序列就能被复现,这样的令牌等同于没有令牌。正确做法是使用密码学安全随机源,再在长度与字符集上做权衡——用较小字符集换更长长度通常更划算,因为短令牌在人工转录时更容易出错。
长度 32、字符集 [a-zA-Z0-9]搜索结果空间 62³² ≈ 2²⁰⁰(用字符集大小与长度相乘得出,而不是随便定长度)使用方法
- 打开「令牌生成器」
- 输入待处理的内容并设置参数
- 根据需要调整输出选项
- 点击「生成」按钮,结果实时显示
- 复制或导出结果
使用场景
- 生成 API Key — 为新接入的服务签发一串高熵随机密钥,写入配置后分发给调用方。
- 会话/重置 token — 生成密码重置或邮箱验证链接里的一次性 token,配合过期时间使用。
- CSRF/Nonce — 为表单或 CSP 生成随机 nonce,防止跨站请求伪造和脚本注入。
- 初始化密钥占位 — 为新项目的 .env 生成 SECRET_KEY、JWT_SECRET 等占位值。
- 批量邀请码 — 一次生成成百上千条互不重复的随机邀请码或激活码。
常见问题
这些随机数足够安全吗?
是。本工具使用 Web Crypto 的 crypto.getRandomValues,这是浏览器提供的密码学安全伪随机数生成器(CSPRNG),适合生成密钥级别的令牌,远优于 Math.random。
令牌应该多长?
经验法则是至少 128 位熵。例如 32 个十六进制字符约 128 位,22 个 Base64 字符约 128 位。安全敏感场景建议用到 256 位(64 个 Hex 字符)。
URL 安全字符集是什么意思?
标准 Base64 含有 +、/、= 这些在 URL 里需转义的字符。URL 安全变体用 - 和 _ 替换,并去掉填充,可直接放进链接或文件名而不被破坏。
生成的令牌会不会重复?
在足够长度下,碰撞概率小到可忽略。但本工具不维护历史记录,如需全局唯一约束,请在你的数据库上加唯一索引兜底。
和 UUID 有什么区别?
UUID 有固定格式和版本语义,长度固定 128 位;本工具生成的是可自定义长度和字符集的纯随机串,更灵活。需要标准标识符时可用本站的 UUID 生成器。
生成的 token 可以直接用到生产环境吗?
可以。生成用的是浏览器内置的密码学安全随机源(crypto.getRandomValues),不是 Math.random 那种可预测的伪随机。前提是你没有改动默认设置去用「易读字符集」这类降低熵的选项,且长度不低于建议值。
token 长度应该选多少?
看对抗场景:防撞的内部标识 128 位(约 22 个 base64 字符)已够;作为会话或 API 凭据对抗在线爆破,建议 ≥128 位熵,离线对抗硬件爆破则 ≥192 位。长度翻倍熵才翻倍,字符集大小同样影响熵,别只看「位数」。
复制出来的 token 带换行或被截断?
长 token 在界面上会折行显示,但复制的是完整值;若粘贴后变短,多为终端或输入框按行截断。建议用复制按钮而非手动选中,粘贴到代码里时用单引号整段包裹,避免编辑器把连续字符串断行。