8 位密码几秒被破?先说清熵怎么算

一、熵 = log₂(字符集 ^ 长度)

字符集大小取决于用了哪几类字符:

用到的字符字符集大小
纯数字10
纯小写字母26
大小写字母52
大小写 + 数字62
大小写 + 数字 + 符号95
含中文(保守计)100

熵就是「需要猜多少次」的以 2 为底的对数,单位 bit。长度每多一位,搜索空间乘字符集大小——这是后面所有结论的来源。

二、10 个口令实测(按离线 GPU 每秒 100 亿次、取搜索空间一半估算)

口令字符集估算破解时间
123456105.91 bit瞬间
12345678106.32 bit瞬间
aaaaaaaa264.70 bit瞬间
abc1233631.02 bit0.1 秒
password2637.60 bit10 秒
qwerty1233646.53 bit约 1.4 小时
Abc123456247.63 bit约 3 小时
你好世界你好世界10031.89 bit0.2 秒
Tr0ub4dor&39572.27 bit约 9000 年
Xk7#pQ2$vL9m9578.84 bit约 86 万年

几处需要解释:

  • 12345678 的熵只有 6.32 bit,而不是 log₂(10⁸) ≈ 26.6 bit——连续序列会被直接识破,估算时按「起点 × 长度」算,也就是 10 × 8。
  • aaaaaaaa 按单字符计,字符集 26 乘长度 1。
  • 你好世界你好世界 重复了「你好世界」两遍,去重后码点数太少,熵打 6 折。
  • password 虽然是 8 位纯字母,熵却比 abc123 高,因为 26⁸ 比 36⁶ 大得多。字典能不能命中是另一回事。

三、长度比复杂度值钱

同样 8 位:纯数字 10⁸,大小写加数字 62⁸,差 6 个数量级——看起来复杂度很有用。但换个比法:把长度加 1 位,搜索空间直接乘 62;而把字符集从 10 扩到 95,只乘 9.5。

所以:与其在 8 位里纠结用不用符号,不如把长度拉到 12 位以上。

四、三条能落地的规矩

  1. 一个站点一个密码,不复用。泄露撞库比暴力破解现实得多。
  2. 重要账号开两步验证。密码真泄露了,验证码这道还能拦一下。
  3. 别用生日、手机号、姓名拼音。这类信息在社工库里现成,熵再高也没意义。

五、这个估算测不出来的东西

工具是纯本地计算、不联网,所以它不查泄露密码库。如果密码是常见词或已经出现在泄露库里,真实强度会低于显示的档位。同样测不出来的还有:是否被复用、是否被键盘记录或钓鱼拿到。

估算假设是离线 GPU 每秒 100 亿次试探。真实攻击者会先跑字典和常见口令组合,所以表里的秒数应当理解为「不考虑字典的暴力破解时间」。

六、直接算

密码强度检测:熵、字符集、档位与改进建议

随机密码生成:按长度与字符类型生成,可用即弃

UUID 生成:需要一个不可预测的随机标识时用

延伸阅读密码复用才是最大风险:管理器与两步验证——撞库原理、密码管理器与迁移顺序。

本站文章为个人使用经验的原创整理,除已注明来源的引用外均为本人撰写。文中涉及的软件名称、商标、截图等归各自权利人所有,引用仅用于说明与交流。如认为本站内容侵犯了你的合法权益,请通过「关于本站」页面的联系方式告知,核实后将及时更正或删除。