我的密码有多强?
看清攻击者能从你的密码中识别出什么,以及它真正能撑多久。
估算会随您的输入实时更新。它完全在本页计算 —— 没有请求要发送,我们也无从得知您输入了什么。
上面那个数字实际在度量什么
多数强度计只算一件事:你密码的长度,乘以你所取用的字符集大小。对于一个随机选出的密码,这是个不错的公式;而对于一个由人选出的密码——也就是几乎所有密码——它就严重误导人了。
按那个公式,Password123! 大约得 79 位。十二个字符,四类字符,满足有史以来所有企业密码策略。而一台破解机器远不到一秒就能拿到它,因为那并不是十二次独立选择。那是一个词典词、一个大家都放在同一个位置的大写字母、三个大家都按同样顺序排的数字,以及一个放在末尾的符号。四次决策,全都可预测。
所以本页做的是另一件事。它把你的密码拆成它能找到的、代价最低的一串可辨识片段,按「够到每一片要花多少次猜测」给每一片定价,然后相乘。任何它认不出来的部分,都按完全暴力破解的价码计。结果就是那个总数的 log₂,而「攻击者会认出什么」那份清单,就是它最终选定的那套拆解方式——是真正的入口路线,不是一份「所有可疑之处」的清单。
它会给哪些模式定价
| 模式 | 示例 | 它让攻击者花多少代价 |
|---|---|---|
| 已泄露的密码 | iloveyou | 它在名单里的位次。往往是个位数。 |
| 词典里的词 | dragonfly | 词表的大小,再乘上一个用于大小写的小系数。 |
| 字符替换 | p@ssw0rd | 那个词的代价,乘以大约四。工具会自动把这些还原回去。 |
| 键盘上的连排 | qwerty、asdfgh | 几千次。每一款工具都会直接生成这些。 |
| 顺序序列 | abcdef、4321 | 不到一千次。 |
| 重复 | abcabcabc | abc 的代价,而不是九个字符的代价。 |
| 年份或日期 | 1987、04121990 | 一个世纪的年份是 120 次猜测。日期不到 40,000 次。 |
| 其他一切 | x7#qL | 完全暴力破解,按你用的字母表大小计。 |
位置也有影响,只是和人们以为的不一样。把数字从末尾挪到一个词的中间会有一点帮助,因为那把这个词切成了两个更短的片段,词典匹配器跨不过去。但它的帮助远远小于再加四个随机字符。
这个估计在哪里过于宽厚
这一点值得直说,因为一个自吹自擂的强度检测器比没有还糟:本页上的每一个数字都是一个上界。
这里的词典是 2,099 个常用英文词,加上 181 个泄露最多的密码。这足以逮住那些造成大部分密码失陷的失败模式,但和真正的攻击者所用的相比差得远。他们的词表动辄几十万个词、涵盖每一种语言,还加上名、姓、地名、足球俱乐部、乐队名,以及过去十五年里每一次公开泄露的全部内容。
具体一点:Tr0ub4dor&3——那个 XKCD 例子,一个真正意义上的弱密码——在这里大约得 72 位,因为「troubadour」不在一份两千词的表里。而一个词典里含有它的工具,会把同样这串字符定价在大约 28 位。这个落差不是算术上的 bug;它就是词典的大小差别,也正是为什么这里一个好分数意味着的是没有发现明显的弱点,而不是这个密码是安全的。
如果结果很糟
人的本能是去修补那个不及格的密码——加个符号,把一个字母换成数字,在末尾放个 2026。那产出的是一个与原来只差一步的密码,而那一步恰恰就是破解工具会施加的变换。如果一个密码分数很差,就换掉它,而不是修它。
生成器会给你一个替代品;而对于那两三个你确实必须记住的密码,它的口令短语模式是更好的选择——六个随机词大约是 66 位,而且经得起被人手敲出来,二十个随机字符则经不起。
有一件事是任何强度检测器都看不见的,而它偏偏最要紧:你是不是在别的地方也用过这个密码。账号丢失的主要方式不是被猜中,而是撞库——从一个站点泄露出来的密码,被拿去在其他每一个用同一个邮箱的站点上重放一遍。一个 120 位的密码用在两个地方,一旦第一个被攻破,它在第二个地方提供的保护就是零。
关于这个分数的问题
把我真实的密码打进这个页面安全吗?
打进这一个是安全的——评估是由已经在你浏览器里运行的 JavaScript 计算出来的,没有任何请求会把它带走。你可以一边输入一边看网络面板,确认什么都没发出去。不过作为习惯,还是该保持怀疑:不少强度检测器会把密码 POST 到服务器上打分,而这样的页面在你还没决定要不要信任它之前,就已经拿到了你的密码。如果你不愿意冒这个判断上的风险,就输入一个结构相似的、而不是真的那个。
为什么这里给的分数比别的密码检测器低得多?
因为大多数检测器只衡量长度和你用了哪几类字符。按那个尺度,Password123! 约为 79 位熵,看上去相当出色。而本页问的是攻击者会怎么试:它找到一个词典词、一个可预测的大写、一串数字和一个结尾符号,把整件事定价在 13 位左右——不到一秒。两个数字打架的时候,低的那个才是在描述现实。
一位熵是什么意思?
一位就是一次翻倍。一个有 40 位熵的密码,是从大约一万亿种可能里抽出来的;41 位就是两万亿。它之所以是个好用的单位,恰恰因为它把「更强」变成了算术:从 60 位升到 70 位,是把工作量提高一千倍;而在一根彩色进度条上从「中等」变成「强」,则什么可操作的信息都没告诉你。
我的密码分数不错。可以放心用吗?
它的意思是没有发现明显的弱点,这跟「安全」不是同一个说法。本页比对的是大约 2,000 个常用词和 180 个已泄露密码;真正的破解工具用的词典要大上几百倍,还带上人名、地名,以及历次泄露中出现过的每一个密码。请把好分数当作你强度的上限,而不是保证——并且记住,账号真正丢失最常见的方式是重复使用密码,而这是任何强度检测器都发现不了的。
把 a 换成 @、把 o 换成 0 有用吗?
几乎没用。任何一款正经的破解工具在遍历词表时都会自动套用这些替换,所以 p@ssw0rd 相对于 password 只多花它区区几次尝试,而不是让搜索空间变大多少。上面的检测器对此建了模:它会先把你输入的内容「还原替换」再去查词,只为这点麻烦收取一个很小的倍数。
攻击者实际上每秒能猜多少次?
这几乎完全取决于网站是怎么存储密码的,而这一点你从外面无从得知。在登录表单上猜很慢,通常还有速率限制——顶多每秒几百次。面对一份泄露的 bcrypt 或 Argon2 哈希数据库,每秒几千次。面对泄露的、未加盐的 MD5 或 SHA-1,普通消费级 GPU 能跑到每秒几千亿次。这正是本工具把三种情形全都列出来、而不是挑一个当作答案的原因。
A strength checker measures one specific risk: someone guessing their way into an account. It says nothing about what your network reveals while you are signed in, which is a separate problem with a separate answer. Run the full privacy check
最后审校于 。发现有内容过时了? 告诉我们.
