复杂度是个错觉
不少人觉得“加符号、大小写混着用”就更安全。决定密码强度的其实是熵,由长度 × 字符集规模共同决定。其中长度最直接:每多一位,可尝试的组合数就指数级上涨。
直观对比
- 8 位纯小写:约 2^37 种组合;
- 12 位(大小写+数字):约 2^71 种;
- 16 位(含符号):约 2^104 种。
几条实在的原则
- 长度优先:至少 12 位,条件允许上 16 位;
- 每个站点独立密码,避免“一破全破”;
- 用密码管理器存,人记不住这么多随机串;
- 开两步验证,密码泄露也还有第二道防线。
常见误区
“P@ssw0rd!” 看着复杂,但它是字典词加常见替换,字典攻击面前并不强。真正强的是随机生成的无意义串,这也是随机生成器的价值所在。
破解时间对比
按每秒 100 亿次尝试(离线 GPU 集群的保守估计)算:
| 密码形态 | 字符集 | 大致穷举时间 |
|---|---|---|
| 8 位小写字母 | 26 | 几分钟 |
| 8 位大小写 + 数字 | 62 | 数小时 |
| 12 位大小写 + 数字 | 62 | 数个世纪 |
| 16 位含符号 | 94 | 远超宇宙年龄 |
这张表的前提是密码真随机。要是字典词加替换(比如 P@ssw0rd),耗时会被字典攻击压到几秒,这就是“看着复杂”的陷阱。
三种能落地的做法
- 随机密码 + 管理器:生成 16 位以上随机串交给管理器,人只牢牢记住主密码;
- 口令短语:四个以上互不搭界的词拼起来(如“钢琴·沼泽·路灯·铁钉”),好记且熵高;
- 两步验证:密码泄露后仍有第二道门,TOTP 应用或硬件密钥优于短信验证码。
两个常被问到的问题
要定期改密码吗?NIST 现在的建议是:没泄露迹象就不必强制轮换,频繁更换只会催生 Password1!、Password2! 这种能猜到的变体。“同一密码加不同后缀”够安全吗?不够。规则一旦被猜出(比如某站后缀是站名),一处泄露就会连累所有站点。
动手试试:随机密码生成器