密码 / 令牌生成器
纯前端 · 密码学安全:用浏览器原生
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」长度够了但熵极低,逐位可预测。随机源才是关键,本工具解决的正是这点。
说到底,口令的强度等于随机源质量乘长度乘字符集;本工具把随机源这一项做对了,剩下两项你照上面的表取就稳。
相关教程
- 堡垒机与跳板 — 运维入口的强口令与密钥管理
- DevSecOps 安全基线 — 口令策略、密钥轮转与防泄露
- Cloudflare 隧道自建 — 自建服务的凭据发放与保护