如何造一个既强又好记的密码
多数密码建议建立在一个大约 2010 年就不再成立的假设上:攻击者是一个一个手工猜密码的人。现在没人这么干了。现代破解跑在 GPU 上,对着拖下来的密码哈希库,每秒尝试几十亿个候选。
这个变化把标准建议整个掀翻了。
长度胜过大写字母和符号
大家被反复叮嘱的两件事——加符号、加大写——都只是把搜索空间乘以一个小系数。而多一个字符乘的是大得多的系数。
算一下。使用 62 种可能字符(字母+数字)的密码,每多一个字符大约增加 5.95 比特熵。把纯小写改成大小写混合,每个字符大约只增加 1 比特。多两个字符的价值,超过所有复杂度规则加起来。
这就是为什么 Tr0ub4dor&3——看起来很强、打起来很烦——实际上弱于 correct-horse-battery-staple 这种由普通单词组成的口令短语。后者更长,而长度才是让攻击者付出时间的东西。
具体说:一个从 62 个字符里随机取的 16 位密码,熵约 95 比特。一个从 7776 词表里随机取的 4 词口令短语,熵约 52 比特。两者都远远超出当前硬件对哈希库攻击所能触及的范围——前者更强,后者好记得多。而两者都比 Summer2026! 好上几个数量级。
真正让密码变弱的是什么
它在泄露库里。 这是主要风险,也是 NIST(SP 800-63B)现在建议把新密码拿去比对已知泄露列表、而不是强制复杂度规则的原因。一个已经出现在泄露事件里的密码,无论它看起来多长多随机,都已经失守了。
它被重复使用。 撞库——把某次泄露里的账号密码拿去试遍所有其他服务——是对普通用户最有效的攻击。一个复用的密码,把一次泄露变成二十次。
它是一个模式。 Password1!、Qwerty123、Company2026、键盘走向,以及字典词的字符替换,全都在破解字典里。把 a 换成 @、o 换成 0 是这些工具早就预料到的,几乎不增加任何成本。
它太短。 12 个字符以下,即便是随机密码也开始进入可触及范围。长度是唯一一个扩展性好的杠杆。
已经过时的建议
“每 90 天换一次密码。” NIST 已经取消这条。强制轮换会催生可预测的模式——Fall2026、Fall2026!、Fall2026!!——并且实测是削弱密码而不是增强。只在有理由时更换:收到泄露通知、凭据被共享过、或者有怀疑。
“每个网站用不同密码,但要全部记住。” 这不是一个靠记忆力能解决的问题,而是一个靠工具已经解决了的问题。
“绝对不要写下来。” 把密码写在纸上、锁在抽屉里,对多数人来说是合理的取舍。写在同步到云端的明文文件里则不是。两者的威胁模型完全不同。
实际该怎么做
- 用密码管理器。 这是性价比最高的一项改变。它生成真正随机的密码、加密存储,并且让你除了一个主口令短语之外什么都不用记。每个密码都变得唯一且够长,这正是你要的。
- 把主密码做成口令短语。 四到六个随机单词。够长、打得够频繁所以记得住、并且和你本人的任何信息无关。
- 开启两步验证。 光有密码是单点故障。TOTP 应用或硬件密钥明显优于短信验证码,而短信又优于什么都没有。
- 定期查泄露。 你用的某个服务被拖库了,就改那个密码——以及任何你复用过它的地方。
安全地生成一个
对于要粘进管理器的密码,生成器是对的工具。密码生成器可以配置长度和字符集,并且完全在你的浏览器里运行——生成的值不会被传输到任何地方。
最后这点不是修饰。一个把结果发回服务器的密码生成器,等于把你刚造的凭据交给了运营它的人。 你无从得知它有没有被记录,而这个工具存在的全部意义就是产出一个秘密。这跟在线文件转换工具安全吗是同一个结构性论证,只是用在了最要紧的那一条数据上。
检查任何生成器的快捷办法:打开浏览器的 Network 面板、生成一个密码、看有没有携带它的请求。浏览器端生成器一个请求都不会产生。
常见问题
密码该多长? 手输的至少 12 个字符,交给管理器存的 16 个以上。长度是最重要的属性,所以宁可长一点。
口令短语和随机字符串一样安全吗? 取决于词数和词表大小。从大词表里取的 4 词短语,对几乎所有账户都够强,而且好记得多。5 到 6 词的,强度可以和 16 位随机字符串相当。
密码管理器安全吗? 比起复用密码,它是一笔好得多的交易。主要风险从“每个网站都有我的密码”转移到“我的主口令是单点故障”——这是一个更小、更可控的风险,尤其是在管理器本身开了两步验证的前提下。
要不要加符号和数字? 只有在它们来自生成器、或者网站强制要求时才需要。刻意把字典词做字符替换,增加的强度非常有限。随机符号确实像其他字符一样增加熵——但加长一个普通密码增加得更多。
用在线密码生成器安全吗? 只有它本地运行时才安全。去验证:打开浏览器 Network 面板,确认没有请求携带生成的值。如果你没法验证,就离线生成。
把密码写下来是坏事吗? 写在纸上、物理上保管好,是合理的取舍。写在明文文件里、截图里,或者会同步到云端的笔记应用里,就不是。