跳到主要内容

读懂密码熵:用 bits 衡量密码强度,长度为什么比复杂度更重要

密码熵把强度变成一个 bits 数字,熵等于长度乘以 log2(字符池大小)。本文讲清字符集、暴力破解耗时、多少 bits 才安全,以及为什么加长比加符号更划算。

发布于 作者 李雷
#密码安全 #密码熵 #密码强度 #暴力破解

读懂密码熵:用 bits 衡量密码强度,长度为什么比复杂度更重要

大多数人判断密码强不强,靠的是感觉:看着够乱就放心,看着像个单词就改一改。问题是感觉没有刻度。一个 16 位的全小写口令和一个 8 位堆满符号的密码,谁更扛得住破解?光凭眼睛分不出来。密码熵就是给这件事一把尺子,它把强度换算成一个具体的数字,单位是 bits。

熵到底是什么

熵衡量的是不可预测性。每多 1 bit,攻击者要穷举的猜测次数就翻一倍。所以 bits 不是线性的,是指数的。40 bits 的密码大约要试 2 的 40 次方,约一万亿次;60 bits 要试一百亿亿次。两者差 20 bits,工作量却差了一百万倍。这就是为什么 bits 涨一点点,安全性却能跳一大截。

记住这一条,后面所有结论都顺理成章:对付暴力破解,你不需要让密码看起来多吓人,你只需要让那个 bits 数字往上走。

熵的公式:字符池大小 × 长度

熵的标准公式很短:

熵(bits)= 长度 × log2(字符池大小)

字符池就是密码可能取用的字符集合。常见的几档是:小写字母 26 个,大写字母 26 个,数字 10 个,ASCII 符号约 33 个。一个密码用到哪几类,字符池就是这几类相加。

举个能自己验算的例子。一个 10 位、只用小写加数字的密码,字符池是 26 + 10 = 36。它的熵就是 10 × log2(36) ≈ 10 × 5.17 ≈ 51.7 bits。再看一个四类全用、长度 12 位的密码,字符池约 26+26+10+33 = 95,熵约 12 × log2(95) ≈ 78 bits。

公式里有两个变量:字符池和长度。下一节会看到,这两个变量的杠杆完全不一样大。

熵和暴力破解耗时的关系

光有 bits 还不够直观,把它换成时间才有体感。暴力破解的耗时这样估:攻击者平均搜索一半的密钥空间就能命中,也就是 2 的 bits 次方再除以 2,然后除以每秒猜测次数。

每秒猜测次数取决于攻击场景,差距极大。我在 密码熵计算器 里固定看四档速度:在线限速登录每秒 1e3,离线慢哈希 1e9,快速 GPU 阵列 1e12,国家级集群 1e15。同一个密码,在这四档下的命运可以天差地别。一个 60 bits 的密码,在 1e15 的集群上几分钟就破,但在在线限速登录下能撑好几个世纪。

这也带出一个常被忽略的坑:在线那一行每秒 1e3,模拟的是有节流的登录接口,而不是被拖库的数据库。一旦密码哈希泄露,真正该看的是离线那几行,1e9 到 1e15,速度可能快上十亿倍。判断一个密码扛不扛得住,要按离线速度来,别拿在线那行自我安慰。

多少 bits 才算安全

给一个粗略但能用的尺子:低于 28 bits 很弱,36 到 59 算中等,60 以上能扛住大多数离线攻击。对真正重要的账号,目标定在 80 bits 以上;128 bits 对几乎所有日常场景都属过剩,那已经是强加密密钥的量级了。

代入一个具体数字感受一下:一个在 94 字符池里随机选出来的 16 位密码,熵约 105 bits,稳稳落在强区间,暴力破解层面基本可以当作不可破。

我自己踩过的认知:长度比复杂度便宜得多

我以前也信「越复杂越安全」,给 8 位密码塞满符号还挺得意。后来动手算才发现完全搞反了。给一个 8 位密码再加一个符号,字符池从 90 多涨到 95,熵几乎不动;但同样这个密码,再加 4 个随机字符,熵能多出 25 bits 以上。在公式里,字符池是被 log2 压扁的那一项,长度却是直接相乘的那一项。换句话说,长度是最便宜的熵。

所以那个反直觉的结论是真的:一个长的全小写口令,几乎每次都赢过短而堆满符号的密码。下次有人纠结要不要在密码里加感叹号,不如直接劝他多打四个字母。

一个重要提醒:理论熵不等于真实强度

最后这点必须说清楚,否则前面的数字会被误用。公式假设每个字符都是从字符池里独立随机选出来的。真实密码很少这样。如果你的 12 位密码是 correcthorse 再加一个年份,熵公式会给你报一个很漂亮的高数字,但攻击者跑一遍字典或规则化的 wordlist,几秒就破了。

所以请把熵当成「真随机密码」的上限,而不是对你实际选的那串字符的保证。想拿到接近上限的熵,密码就得真的随机生成,这正是 密码生成器 这类工具的价值:它替你从完整字符池里均匀取样,让算出来的 bits 不只是纸面数字。

把尺子用对,结论其实很朴素:让密码够长,让它真随机,然后用 bits 去验证,而不是用感觉去猜。


Made by Toolora · Updated 2026-06-13