跳转至

密码 / 令牌生成器

纯前端 · 密码学安全:用浏览器原生 crypto.getRandomValues 生成,不联网、不记录、不离开你的设备。适合临时造强口令、API 令牌、一次性找回码。

怎么用

选好字符集与长度,填要生成的条数,点 生成。下方列出每条口令,并实时显示整体熵值(bits)。勾选「排除易混淆字符」可去掉 0/O、1/l/I 这类容易看错的字符。


为什么不能随便造口令

口令的强度不取决于你「觉得多复杂」,而取决于熵——也就是 attacker 要试多少种可能。一个「PaSSword2026!」看着花哨,但本质是常见词 + 年份 + 符号,字典攻击几下就破。真正拦住攻击者的,是足够长的、不可预测的随机字符序列。

这就是为什么本工具坚持用密码学安全随机源:它输出的每一位都不依赖你输入的语义,攻击者没有任何先验可循。

各字符集的熵怎么算

熵(bits)≈ 长度 × log₂(字符集大小)。常见字符集:

  • 纯小写 26 个:每条字符贡献约 4.7 bits
  • 大小写 + 数字 62 个:约 5.95 bits
  • 再加符号约 70–80 个:约 6.3 bits

举例:16 位、含大小写数字符号 ≈ 95 bits,远超「够强」线;12 位同集合 ≈ 71 bits,也达标。反过来,8 位纯数字只有约 26 bits,弱到几分钟可爆破——短数字验证码只能当「一次性 + 限次」用,绝不当主口令。

几个必须知道的坑

别用 Math.random():它是确定性伪随机,种子可被预测或重建,攻击者能大幅缩小搜索空间。口令和令牌必须走 crypto.getRandomValues 这类密码学安全源,否则长度再长也形同虚设。本工具用的就是这个,且对字符集长度做了拒绝采样,避免取模带来的轻微偏置。

排除易混淆字符是把双刃剑:去掉 0/O/1/l/I 能减少人工抄写错误,但字符集变小、熵略降。对要人读的找回码、激活码值得开;对机器直接使用、不人读的 API 令牌,开着反而亏了熵,建议关掉。

生成 ≠ 保管:本工具只负责「造得够随机」,至于「存在哪、给谁看」它管不了。别把生成的口令截图发群里、别贴在工单明文、别写进代码仓库。需要长期保存的口令,用密码管理器(它还会帮你查重和防撞库)。

复制走剪贴板:浏览器里点复制会把口令放进系统剪贴板,某些环境会同步到云剪贴板或留在历史里。用完记得清剪贴板,或在受信环境操作。

什么时候该用密码管理器而不是本工具

  • 要长期记忆几十上百个口令:本工具每次都随机,记不住也没法回放,必须靠管理器。
  • 要防撞库 / 查泄露:管理器能提醒你某口令是否已出现在已知泄露库。
  • 要团队共享机密:用专门的机密管理(Vault 之类),而不是在群里发一条口令。

本工具定位是「随手造一个强随机串」——临时口令、API token、数据库初始密码、一次性找回码,这些场景它正好。

不同凭据的生成建议

不是所有「密码」都一样,按用途调整:

  • 主口令 / 账号密码:长度优先,16 位以上、含大小写数字符号。人记不住就交给密码管理器,别自己硬记弱口令。
  • API 令牌 / Access Token:机器使用、不人读,关掉「排除易混淆」以保住熵;长度 32 位以上,配合 HTTPS 传输与短期过期。
  • 一次性找回码 / 激活码:要人读要手输,开「排除易混淆」减少抄错;可分组(如 4-4-4)加连字符提升可读性,但连字符不参与熵。
  • 数据库初始密码 / 密钥种子:生成后立刻注入配置或密钥管理,明文只在内存停留,绝不落日志。

长度与服务类型对照

用途 推荐长度 字符集 约熵值
日常账号口令 16 大小写+数字+符号 ~95 bits
高安全口令 20 大小写+数字+符号 ~119 bits
API 令牌 32+ 大小写+数字(符号可选) ~190 bits
一次性找回码 12(分 3 组) 排除易混淆 ~62 bits
会话密钥种子 32 全字符集 ~190 bits

位数不是越随机越好,而是「够用且好用」。找回码太随机反而难抄,令牌太短抵不住离线爆破。按上表取,基本不会错。

一个生成示例

假设你要给新接的 CI 系统发一条 API 令牌:选长度 36、字符集大小写数字(不开易混淆),生成类似 kP9mQx2vL8nR4tB7wC3yZ1aE6uH5sJ0dF 的串。它的熵约 36 × 6.0 ≈ 216 bits,离线暴力破解在可见未来都不现实。生成后通过密钥管理下发,本地剪贴板用完即清,不进任何聊天记录和代码仓库。

常见的凭据管理错误

  • 写进代码仓库:把密钥硬编码在源码里是头号泄露源,靠 .env + 机密管理(如 Vault)隔离,且仓库扫泄露。
  • 明文进日志:应用把请求体或 token 原样打日志,一次日志外泄就全盘皆输。日志脱敏和正则遮蔽是基本操作。
  • 共享账号不轮换:一个口令多人用、从不换,离职也带不走权限。按人发令牌、设过期、可随时吊销才是正路。
  • 只靠长度不靠随机:用「12345678」扩成「1234567890123456」长度够了但熵极低,逐位可预测。随机源才是关键,本工具解决的正是这点。

说到底,口令的强度等于随机源质量乘长度乘字符集;本工具把随机源这一项做对了,剩下两项你照上面的表取就稳。

相关教程