什么才算强密码?长度、熵、字典攻击

· 约 2 分钟 🔐 密码生成

“密码必须包含大小写、数字、特殊字符”——这条规则让无数人用了 P@ssw0rd123,自以为很安全。实际上它在字典攻击下几秒就能破解。真正决定密码强度的不是”复杂度”,而是

密码熵:用比特衡量强度

熵的公式很简单:

熵 = log₂(字符集大小 ^ 密码长度)

对几种密码的对比:

密码字符集长度熵(位)破解难度
12345678数字 10826.6瞬间
password小写 26837.6秒级
P@ssw0rd大小写+数字+符号852.6小时级
horsebatterystaple小写 261884.6数千年
随机 12 位含所有字符941278.6数百年

结论:18 位的全小写单词组合,比 8 位的”复杂密码”强几万倍。

为什么 P@ssw0rd 很弱

攻击者不会傻到从 aaaaaaaa 逐一尝试到 ZZZZZZZZ——那叫暴力破解,现代密码里很少发生。真正常用的是字典攻击

  1. 拿到过去十几年泄漏的几十亿条真实密码
  2. 叠加常见替换规则:a→@、e→3、o→0、s→$
  3. 在字典末尾追加 123!2024
  4. 用 GPU 每秒尝试几十亿次哈希

P@ssw0rd 百分百在这个字典里。哪怕你把它当成”从没见过的组合”,黑客的字典里早就有。

强密码的三条铁律

1. 长度 > 复杂度 12 位起步,16 位更好。每多一位,破解时间指数级增长。

2. 不用真词、不用生日、不用键盘顺序 qwerty198505asdf110120 全在字典里。

3. 每个站一个密码 泄漏最大危害是”撞库”——一个站泄漏,攻击者拿去试你所有账号。最高效的防护是密码不一样,而不是密码多复杂。

Diceware:好记又强的密码

扔骰子从词表里抽 4-6 个词拼起来:correct horse battery staple。熵 70+ 位,好记好输入,安全性远超”复杂短密码”。现代浏览器密码管理器生成的也是这种结构。

什么时候必须用密码管理器

超过 10 个账号,就没有人能记住 10 个不同的高熵密码。密码管理器(KeePass/1Password/Bitwarden)只需记住 1 个主密码,其他全随机生成并保存。不用密码管理器的”记忆力方案”最终都会退化成密码重复使用

生成 + 评级

用工具生成足够长的随机密码,或检测你现有密码的强度——系统会标出熵值、在已知泄漏库里的出现次数、以及到底”几秒能破”。

❓ 常见问题

多长的密码才算安全?

日常账户 12 位起步,重要账户(邮箱、银行、密码管理器主密码)16 位以上。16 位随机字符(含大小写数字符号)熵约 105 位,在可预见的计算能力下破解不了。长度比复杂度更重要——18 位全小写比 8 位复杂密码安全得多。

强制定期改密码有用吗?

NIST 2017 年起不再推荐。研究发现强制改密导致用户用 `Password1`→`Password2`→`Password3` 这种可预测模式,安全性反而下降。现代建议:密码只在疑似泄漏时改,平时保持强密码 + 二次验证即可。

密码管理器被黑了怎么办?

主流密码管理器(1Password、Bitwarden、KeePass)采用零知识架构——服务器存的是用主密码加密后的密文,服务器被黑也拿不到明文。前提是主密码足够强且不重复使用。2022 年 LastPass 泄漏正是提醒用户检查自己的主密码强度。

二次验证(2FA)选短信、APP 还是硬件密钥?

优先级:硬件密钥(YubiKey)> TOTP 认证 APP(Google Authenticator、Authy)> 短信验证码。短信 2FA 易被 SIM 卡交换攻击,银行账户等高价值账号别只依赖短信。

🔐 打开 密码生成 强度评级 · 排除易混淆 · 历史