密码短语怎么设置:几个词才够、中文短语为什么常更弱(附破解时间表)
「密码短语更安全」这句话只对了一半。四个随机单词拼起来的口令短语,在拿到哈希的离线爆破场景里,平均 30 分钟就能被跑完——它比 P@ssw0rd! 强,但远没到「可以用在主密码上」的程度。真正决定强度的不是「像不像一句话」,而是词从哪里来、一共几个、以及攻击者手上的字典有多大。
这篇把三件事讲清楚:几个词才算够(附破解时间对照表)、中文短语为什么常常比英文更弱、以及一套 10 分钟能做完的造词与验收流程。
先算账:词数决定一切
用 EFF 的 7776 词长词表随机取词,每个词贡献 log₂(7776) ≈ 12.9 bit 熵。攻击者拿到数据库哈希后可以本地离线爆破,现代多卡机器对弱哈希(MD5/SHA1,或 fast-hash 的 bcrypt 低轮次)能到每秒 10¹² 次量级;换成 Argon2id 这类慢哈希会低几个数量级,但你不能假设每个网站都用对了参数。
| 词数 | 熵 | 组合数 | 离线爆破(10¹² 次/秒) | 离线爆破(10¹⁰ 次/秒) |
|---|---|---|---|---|
| 3 词 | 38.8 bit | 4.7 × 10¹¹ | 不到 1 秒 | 约 24 秒 |
| 4 词 | 51.7 bit | 3.7 × 10¹⁵ | 约 30 分钟 | 约 2 天 |
| 5 词 | 64.6 bit | 2.8 × 10¹⁹ | 约 5 个月 | 约 45 年 |
| 6 词 | 77.5 bit | 2.2 × 10²³ | 约 350 年 | 约 35 万年 |
| 7 词 | 90.5 bit | 1.7 × 10²⁷ | 约 2700 万年 | 约 27 亿年 |
结论很直接:5 个词是及格线,6 个词是舒适区,4 个词只适合「在线登录 + 有错误次数限制」的场景。在线登录试 10 次就锁号,4 词短语完全够用;一旦哈希泄露、攻击者可以离线慢慢跑,4 词就只有半小时的抵抗力。
还要注意词表规模会直接稀释熵。BIP39 只有 2048 个词,每词 11 bit,6 个词才 66 bit;而很多人「自己想的词」实际词池只有几百个常用词,4 个词可能连 30 bit 都不到。
「长而复杂」不等于「难猜」
很多人把 Wint3r!Sun#2026 当成强密码:有大小写、有符号、有数字、长度 14。但这串字符的生成过程是人类规则——季节 + 符号 + 年份,市面上的规则字典第一时间就会覆盖。它的真实熵大概只有 30~40 bit,比 5 个随机词差一个数量级。
| 类型 | 示例结构 | 实际熵 | 记忆成本 |
|---|---|---|---|
| 8 位混合字符 | 大小写 + 数字 + 符号 | 约 30 bit(人类挑选后更低) | 高,常写便签 |
| 替换法密码 | P@ssw0rd、L3tm3in | 低于 20 bit,字典秒破 | 低 |
| 4 词短语 | random word × 4 | 约 51 bit | 低,可复述 |
| 5~6 词短语 | random word × 5~6 | 65~78 bit | 低到中 |
| 密码管理器生成 | 16 位全随机 | 约 100 bit | 零(不用记) |
所以正确的分工是:需要人脑记住的那一两个密码(主密码、设备解锁)用短语;其余全部交给密码管理器生成随机串。这也是密码管理器怎么选里反复强调的一条:人只需要记住一把钥匙。
中文短语的三个坑
中文用户直接照搬英文教程,最容易在这三处翻车。
坑一:成语、诗句、歌词都在字典里
「床前明月光」「一帆风顺」「面朝大海」这类短语看着文雅,实际是攻击者字典的第一梯队。常用成语约 3 万条,即便随机挑 4 个成语,熵也只有 log₂(30000⁴) ≈ 59 bit,而且真实语料高度集中在几百个高频成语里,实际强度更低。成语的特点恰恰是「大家都熟」,而「大家都熟」等于「字典里有」。
坑二:拼音全拼会被输入法词库反向利用
如果你用 woaini520、zhangsan1990 这种全拼串,攻击者不需要懂中文也能用中文姓名拼音表 + 常用词拼音表组合爆破。更隐蔽的是:云端输入法会记录你的用词习惯。同一个账号在登录页反复输入某个词的拼音,这个词就更容易出现在联想第一位,也更容易被旁人或录屏看到。
坑三:中文单字的信息密度被高估
一级常用汉字 3500 个,一个字约 11.8 bit;听上去不错,但人不会随机挑字——真实的「随机中文串」往往来自几十个高频字,4 个字可能不到 25 bit。相对来说,英文随机词表 + 中文记忆场景是更稳的组合:词表是机器随机的,故事是你自己编的。
| 中文短语写法 | 攻击者怎么破 | 结论 |
|---|---|---|
| 四字成语组合 | 成语词典 + 高频排序 | 不要用于主密码 |
| 诗句 / 歌词 | 全网语料库直接匹配 | 不要用 |
| 姓名拼音 + 生日 | 姓名表 + 日期规则 | 一秒破 |
| 随机具体名词(跨语种) | 需要覆盖多语言词表,成本陡增 | 可用,≥5 个 |
| 骰子法英文词表 + 自编故事 | 只能穷举 7776ⁿ | 推荐 |
造词四步:10 分钟做完
- 定词数:主密码 6 词,设备解锁/Wi-Fi 4~5 词,加密备份口令 6 词以上。先按用途定数量,别先想词。
- 用真随机源取词:拿 5 颗骰子掷 5 次得到一个 1~7776 的数(EFF 长词表就是这么设计的),或直接用密码管理器/离线脚本的「随机短语」功能。不要自己「随便想」——人对随机的直觉很差。
- 只挑具体名词和动词:`harbor`、`ladder`、`otter`、`vanish` 这类能画出来的词,比 `justice`、`system` 好记十倍。避免形容词和抽象词。
- 固定分隔符 + 一个位置固定的加盐:比如词间用
-,末尾固定加 3 位只有你知道的字符(如#K7)。加盐不要放在开头,也不要每年换位置——换位置等于给自己制造记忆事故。
哪些账户该用短语,哪些必须随机
| 场景 | 推荐形式 | 理由 |
|---|---|---|
| 密码管理器主密码 | 6 词短语 + 固定加盐 | 唯一必须靠人脑记住的钥匙,且不能写下来 |
| 手机 / 电脑解锁 | 4~6 位数字 + 生物识别,或 5 词短语 | 每天输入几十次,可用性优先,配合设备加密 |
| 全盘 / 备份加密口令 | 6 词以上,单独一个 | 恢复时要手输,离线爆破无速率限制 |
| 家庭 Wi-Fi | 5 词短语 | 要念给客人听,不能有歧义字符 |
| 邮箱、网银、社交 | 管理器生成的 16 位随机串 + 双因素 | 每天不用手输,强度优先 |
| 一次性站点、试用账号 | 随机串,用完即弃 | 没有记忆价值 |
注意最后一行和第一行的关系:短语是给「必须记住」的密码用的,不是给所有密码用的。如果你的主密码已经是 6 词短语,其余密码就不该再占用记忆——这也是主密码忘了怎么办里最想避免的局面:把所有账号都压在一个人脑记忆上。
记住它的三个动作
- 编一个荒诞画面:6 个词要在脑内连成一个能「看见」的场景,越不合逻辑越好记(会飞的梯子砸中水獭)。
- 第一周每天默写一次:只在纸上写,不存手机备忘录;连续 7 天能一次写对,才算记住。
- 写一张「提示卡」而不是密码卡:只写 6 个词的首字母和加盐位置,锁进抽屉。别人拿到也拼不出,你看到能想起来。
还有一个容易被忽略的细节:关掉输入法的云同步和用户词库上传,登录主密码时切到英文键盘。中文输入法在密码框里留下的候选记录,是本地取证和录屏泄露的常见来源。
发布前自检清单
- 词数达标:主密码 ≥6 词,设备 ≥4 词,备份 ≥6 词;
- 词来自随机源(骰子/管理器),不是自己想的;
- 没有成语、诗句、歌词、姓名拼音、生日、公司名;
- 没有
a→@、o→0这类可预测替换; - 全串长度 ≥20 字符,包含至少一个非字母分隔符;
- 加盐位置固定,且没有写在任何电子设备里;
- 已在密码管理器里做了「应急访问」或恢复码备份(见恢复码怎么保存);
- 已开启双因素,且优先用验证器或 Passkey,而不是短信。
常见问题
中文短语一定不安全吗?
不一定,但要求更高:必须是机器随机取的中文词(不是自己想),词数 ≥6,且不能用成语和常见搭配。达到这个标准的中文短语和英文短语强度相当,只是造词工具更难找,输入时也更容易被输入法干扰。
短语里能不能加年份或网站名?
不要。加网站名等于把「一站一密」变成可推导规则,一个站泄露就能推出其余站;加年份则把熵砍掉十几个 bit。需要区分站点就交给密码管理器,它本来就是干这个的。
5 个词够不够用网银?
够,但没必要。网银每天不用手输,应该用管理器生成的随机串 + 双因素;把 5 词短语留给必须手输的主密码和设备解锁,收益更高。
把短语写在纸上安全吗?
比自己想一个弱密码安全得多。关键在存放方式:单独一张纸、不和设备放一起、写提示不写全文。纸质备份的唯一敌人是火灾、丢失和被同住者看到,这三件事都能用「异地 + 不标注用途」缓解。
小结
密码短语的核心不是「造句」,而是用机器随机选词,把长度堆到 5 词以上,再避开中文语料里那些人人都会想到的组合。做完这三件事,你就有了一个能复述、能通过离线爆破考验的主密码;剩下的密码交给管理器随机生成,再配一层双因素(两步验证怎么开启),整套账号安全的底座就算搭好了。