跳到主要内容

密码强度怎么算才靠谱:熵值、破解时间与常见弱口令

用熵值和破解时间两个硬指标判断密码强度,看懂复杂度与长度的真实权重,认清常见弱口令,并掌握本地离线检测不上传的检测方法和具体改进建议。

发布于 作者 李雷
#密码安全 #密码强度 #信息安全

密码强度怎么算才靠谱:熵值、破解时间与常见弱口令

大多数人判断密码强不强,靠的是一句模糊的话:有大写、有数字、有符号,应该够了吧。这句话恰好是攻击者最喜欢的误区。判断密码强度只有两个硬指标,一个是熵,一个是被破解所需的时间。下面把这两个数字拆开讲清楚。

长度、复杂度和熵到底谁重要

熵是用来衡量「一个密码有多难猜」的位数。它的计算很直接:先看你实际用到的字符集有多大,纯小写字母是 26,加上大写是 52,再加数字是 62,加上常见符号大约是 95。然后用「字符集大小的密码长度次方」算出总可能数,取以 2 为底的对数,就是熵的位数。

举个具体的:一个 8 位的纯小写密码,字符空间是 26 的 8 次方,约等于 2090 亿种,对应大约 37.6 位熵。同样 8 位但混了大小写数字符号,字符空间是 95 的 8 次方,熵涨到约 52.6 位。这说明复杂度确实有用,但有个更狠的事实:每多一位长度,熵增加的是「以字符集为底的一个对数」,而把同一密码加长往往比硬塞符号更划算。一个 12 位纯小写密码(约 56 位熵)就已经超过那个 8 位全字符集密码。长度是真正的杠杆,复杂度只是辅助。

这里要警惕一个陷阱:熵的公式假设字符是随机选的。如果你写的是 aaaaaaaaaaaaaaaa,肉眼看是 16 位很长,但它几乎没有熵,因为重复串可以被直接枚举。所以要看的是熵的位数,不是字符个数。

暴力破解到底要多久

光有熵还不够直观,把它换算成破解时间才有冲击力。关键在于你假设的攻击者每秒能猜多少次。

按业界常用的两档模型估算:受速率限制的在线登录大约每秒 1,000 次,而拿到泄露 hash 后用 GPU 离线跑,能到每秒约 1,000 亿次,两者差了一亿倍。一个 52 位熵的密码(约 4500 万亿种组合)在离线 GPU 下平均约半天就能跑完,但在在线登录场景下要几万年。这就是为什么同一个密码,在不同威胁模型下的结论可以完全相反。

一个真实对比:弱密码 vs 强密码

拿两个具体口令算一遍。

弱密码 Summer2024!,看起来大小写数字符号都齐了,但它命中了「季节 + 年份」这个经典模式,而且 Summer2024 这类字符串本身就在泄露列表里。攻击者的字典加变形规则会优先尝试它,离线攻击下破解时间不到一秒。它的复杂度是假的。

强密码用 5 个互不相关的随机单词加 1 个数字组成的 passphrase,比如把四五个常见词随机拼起来。它的熵能轻松冲过 80 位,离线 GPU 模型下的破解预估直接从「几分钟」变成「几个世纪」。同样好记,安全性却差了天文数字级别。这正是 xkcd 936 那张漫画讲的道理:结构可预测的复杂密码,远不如几个随机单词拼成的长口令。

我自己迁到密码管理器时就这么干过:在检测工具里反复试候选主口令,直到找到一个 5 词加 1 位数字、熵过 90 位、离线模型显示「数十年才能破」的组合才定下来。整个过程没有把任何候选口令喂进服务端,心里踏实很多。

这些弱口令永远别用

有一类密码无论加多少花样都不能用,因为它们已经躺在泄露语料里。RockYou 泄露的高频项(123456、password、qwerty 之类)、路由器和摄像头的厂商默认口令、中英文经典弱口令,都是攻击者字典里的第一批。还有两个容易被忽略的:键盘序列(qwerty、asdfgh)会被专门的规则命中;l33t 替换(P@ssw0rd)攻击者默认就会跑变形规则,照样秒破。判断标准很简单:如果一个密码在泄露检测里没通过,任何情况下都不要用。

检测密码,为什么必须本地不上传

检测密码强度有个天然的悖论:你想知道密码安不安全,却要先把它输进某个网站。如果那个网站记录了你的输入,你等于亲手把密码泄露了。

正确的做法是全程本地运行。密码强度检测工具的整个分析,包括熵值计算、破解时间预估、以及 1,000 多条泄露列表的匹配,都是浏览器标签页内的本地 JavaScript 完成,没有 fetch、没有 WebSocket、不写入任何存储,也不放进 URL,分享链接绝不会带出你的密码。你完全可以打开浏览器的开发者工具,在网络面板里盯着看,输入密码后不会有任何携带它的请求发出去。关闭标签页,你输入的内容就彻底消失。审一个你已经在用的老密码时,这一点尤其重要。

具体怎么改进

如果检测结果不理想,按这个顺序动手:先加长度,把密码扩到 14 位以上,长度带来的熵增最划算;其次换思路,与其在短密码里塞符号,不如用 5 到 6 个互不相关的随机单词组成 passphrase;第三,去掉年份、生日、键盘序列这些可预测片段。最后,最关键的一步是用工具帮你生成和保管:交给密码生成器生成 30 位的真随机密码,在每个站点都用不同的那一个,自己只需要记住一个强主口令。这样风险就从「任何一个被攻破的站点都会泄露你重复用的密码」收敛成「我把一个 vault 守好」。

判断密码强度,记住两个数字就够了:熵看够不够,破解时间看离线那一档。剩下的交给工具。


Made by Toolora · Updated 2026-06-13