闪算吐司

密码生成器

本地生成强口令或好记短语,顺带算清它到底有多难破

本地工具 · 本地运行

生成

生成模式
位

长度比复杂度更值钱

条
个
字符集

剔除 0Oo1lI|`'" 等看着像的字符

密码生成器怎么用

口令的抗爆破能力只由一个量决定:信息熵。它等于「长度 × log2(字符集大小)」——把长度从 12 位加到 16 位带来的提升,远大于把符号从 14 个换成 32 个。所以先拉长,再谈复杂度。

本工具用浏览器的 crypto.getRandomValues 取随机数,并采用拒绝采样而非取模:取模会因为 2^32 不是字符集大小的整数倍而引入模数偏差,让靠前的字符被选中的概率略高,熵被悄悄削掉。

短语口令(如 thunder-stone-47@sparrow)是另一条路线:每个词只贡献约 7 bit,但 5 个词就能超过 35 bit,而且人能记住、不会写错,它的价值在于「一站一口令」终于可执行了。

计算依据

  1. 信息熵(bit) = 口令长度 × log2(去重后的字符集大小);短语模式 = 单词数 × log2(词表 128) + log2(附加字符集)
  2. 期望破解次数 = 2^(熵 − 1),破解天数 = 期望次数 ÷ 攻击算力(次/秒) ÷ 86400
  3. 强度分档:<40 很弱 / 40~60 一般 / 60~80 强 / 80~120 很强 / ≥120 极强;单一字符类别、3 个以上连续重复、长度 <12 各扣一档

常见问题

为什么不用 Math.random?
它不是密码学安全随机源,状态可被同页其它脚本采样反推,一旦恢复,之后生成的口令全部可预测。本工具只用 crypto.getRandomValues 加拒绝采样。
多少位才算安全?
按 94 个字符的字符集算,14 位约 90 bit,已能挡住 GPU 集群离线爆破;若担心国家级算力,用 20 位以上或改用 6 词短语,并开启 2FA。
排除易混淆字符会降低安全性吗?
会略微降低(字符集小几 bit),但换来抄写与口头传达不出错。交给密码管理器时不必排除,需要手敲(WiFi、路由器后台)时建议排除。