强密码怎么设置:别再背大小写加符号,先算熵和破解时间
「至少 8 位,包含大小写字母、数字和符号」——这条规则几乎人人都背过,但它既解释不了为什么 `P@ssw0rd1` 会被秒破,也解释不了为什么四个随机单词更难猜。密码强度不是「看起来复杂」,而是攻击者要试多少次。这篇用熵和破解时间算给你看,再给一套能落地的设置规则。
强度 = 攻击者要试的次数
密码的强度可以用熵衡量,单位是比特。粗略公式:熵 ≈ 长度 × log₂(字符集大小)。字符集越大、长度越长,熵越高;长度的影响是乘法,复杂度的提升则很有限。
| 密码形态 | 字符集/组合数 | 熵(约) | 离线暴力破解时间(10¹¹ 次/秒) |
|---|---|---|---|
| 8 位小写字母(如 qwertyui) | 26⁸ | 38 bit | 几分钟 |
| 8 位混合大小写+数字+符号(如 P@ssw0rd) | 95⁸ | 52 bit | 几小时到几天 |
| 12 位随机混合字符 | 95¹² | 79 bit | 数千年 |
| 4 个随机单词(如 correct-horse-battery-staple 简写) | 约 7776⁴ | 约 51 bit | 数天(但抗字典攻击更强) |
| 5 个随机单词 | 约 7776⁵ | 约 64 bit | 数百年 |
注意两个现实:一是真实攻击不是纯暴力,字典、规则变形、泄露库比对会先跑,所以 `P@ssw0rd` 这类「看起来复杂」的密码实际上排在字典前几位;二是离线破解速度取决于存储方式,同一个密码在 bcrypt/Argon2 下能撑几百年,在明文 MD5 库里可能几秒就破。你控制不了对方怎么存,只能把自己的密码做长。
三条比「复杂度」更重要的规则
- 每个账号唯一:撞库是现实中最主要的入侵方式。一个站泄露,密码复用的账号全部沦陷。这一条的价值高于任何复杂度技巧。
- 重要的账号用长密码 + 双因素:邮箱、银行、支付、主账号(Apple ID / Google / 微信)用 16 位以上随机密码,并开启验证器或 Passkey。开启方法见两步验证怎么开启。
- 不要定期硬换:现行 NIST 指南已不建议强制周期性更换,除非怀疑泄露。频繁换密码的副作用是人会选更弱、更有规律的密码。
按场景给配方
| 场景 | 建议 | 理由 |
|---|---|---|
| 密码管理器主密码 | 5 个随机单词,或 20 位以上短语 | 要手动输入、要记得住、要抗字典 |
| 邮箱 / 支付 / 主账号 | 管理器生成 16~20 位随机字符 | 不复用,泄露影响最大 |
| 普通网站 | 管理器生成 12~16 位 | 不用记,交给工具 |
| 设备解锁 / 开机密码 | 6 位以上数字 + 生物识别 | 受硬件限速保护,长度够即可 |
| WiFi 密码 | 12 位以上随机,或 4 词短语 | 要方便家人输入,又要抗蹭网 |
随机短语怎么造?选 4~5 个互不相关的常用词,用连字符或空格连接,例如「蓝色-电梯-柠檬-尺子-雨天」。不要用歌词、名言、家人名字,也不要自己「想」随机——人对随机的直觉很差。
四个常见误区
- 把字母换成符号就安全了:`a→@`、`o→0` 是最早被规则库覆盖的变形,几乎不增加熵。
- 用生日、手机号、姓名拼音:社工信息一搜就有,字典里也有。
- 所有站用「基础密码 + 站点名」:一旦一个站泄露,规则就能被推导出来。
- 把密码写在便签贴显示器上:物理泄露同样是泄露,尤其是办公室和共享住所。
常见问题
密码越长越好,那 30 位是不是更安全?
安全性上是的,但超过一定长度后收益递减,真正的瓶颈变成「你怎么记住、怎么输入」。16~20 位随机密码配管理器,已经远超实际攻击成本。
密码管理器被攻破,不就全丢了吗?
主流管理器只存加密后的密文,主密码不落库。攻击者拿到库也要离线破解主密码,所以主密码要足够长。选型与风险边界见密码管理器哪个好用。
怎么知道自己的密码有没有泄露?
用邮箱查泄露库(如 Have I Been Pwned),查到就立刻改该站密码并检查登录记录。处理顺序见密码泄露了怎么办。
小结
强密码的公式是:长度优先 + 每站唯一 + 双因素兜底。人脑只负责记住一个足够长的主密码,其余交给密码管理器生成 16 位随机串。别再纠结大小写和符号,先把长度和唯一性做到位。