# 密码短语生成器

> 从 7776 个单词的 EFF 大词表里随机抽一个词，就增加 log2(7776) ≈ 12.9 比特的熵。默认的 6 个单词有约 2.2 × 10²³ 种组合，也就是 77.5 比特，这正是 EFF 自己推荐的长度。和同等强度的随机字符串相比，密码短语更容易记住，也更不容易输错。

## 什么是密码短语

密码短语（passphrase，也有人译作“通行短语”或“口令短语”）是用几个随机单词连成的密码，比如 `pester-parameter-removed-popular-dollhouse-brick`。它比 `q7#Vd!2mZ` 长得多，但大多数人花一两天就能背下来。

有些密码只能装在脑子里：解锁密码管理器的主密码、电脑开机登录密码、加密硬盘的密码。这些你每天要凭记忆输入好几次，密码管理器也帮不上忙。随机字符串难记又容易打错，几个普通单词就友好得多。

关键在于，单词必须由随机过程挑选，而不是你自己挑。人挑的往往是歌词、名言和熟悉的说法，破解工具里恰恰收着海量这类词组。一个从 7776 个词里均匀抽出的单词，不管看起来多普通，都稳稳贡献 12.9 比特。

美国网络安全和基础设施安全局（CISA）把“4 到 7 个互不相关的单词”列为随机字符串之外的一种可选做法。微软用来轮换本地管理员密码的 Windows LAPS 也能生成密码短语，词表取自 EFF，默认 6 个词。

## 为什么是英文单词

本工具用的是 EFF 大词表，全部是英文单词。挑这份词表，是因为它的单词都比较常见、好拼写，而且彼此不容易混淆。密码的强度只取决于“从多少个词里随机抽”，和你认不认识这些词无关；遇到生词，多看几遍就记住了。

用中文词语或拼音当密码短语也不是不行，网上也有中文版的 Diceware 词表。但汉字要靠输入法才能打出来，开机解锁这类没有输入法的场合往往打不了；拼音不带声调，同音词又多，自己记的时候容易记混。对大多数人来说，英文单词加连字符是最省事的选择。

## 生成一个密码短语

1. 单词数保持 6 个，或者改成 3 到 12 之间的任何数字。
2. 分隔符保留连字符，或者换成空格、点、下划线，也可以不加。
3. 网站要求有大写字母或数字时，打开首字母大写或加一位数字。
4. 点“再生成一个”，多点几次，直到出现一组你能想象成画面的单词。
5. 把密码短语存进密码管理器；或者写在纸上收好，等背熟了再处理掉。

## 各个选项改变了什么

| 选项 | 对熵的影响 | 什么时候用 |
|---|---|---|
| 单词数（3–12） | 每个词增加 12.9 比特 | 调节强度的主旋钮 |
| 分隔符（默认连字符） | 不影响，由你决定 | 空格读起来自然；连字符不怕表单自动去掉空格 |
| 首字母大写 | 不影响，每个词都大写 | 应付“必须包含大写字母”的规则 |
| 加一位数字 | 增加 log2(10 × 单词数) 比特，6 个词时约 5.9 比特 | 应付“必须包含数字”的规则 |

首字母大写和分隔符对每个词都一样处理，所以不增加任何不可预测性：知道你用了这个工具的人，也知道有这些选项。页面显示的熵只计算随机选择的部分：那几个单词，以及加数字时，数字本身和它跟在哪个词后面。数字有 10 种取值，跟在随机选中的一个词后面，所以贡献 log2(10 × 单词数) 比特，6 个词时就是 log2(60) ≈ 5.9 比特。

“不加分隔符”在这份词表上是安全的，因为表里没有任何一个词是另一个词的开头。连在一起的 `sizablepresume` 只有一种拆法，去掉分隔符并不损失强度。词表里有 4 个词自带连字符（drop-down、felt-tip、t-shirt、yo-yo），配上连字符分隔符看着有点怪，但不影响强度。

## 该用几个单词

下表假设攻击者知道你的设置和词表，在离线状态下猜测。时间按猜中前平均要试一半组合来算。两种速度：每秒 10¹⁰ 次，和一块 RTX 4090 显卡破解无盐 SHA-256 的速度（约每秒 220 亿次）同一数量级；每秒 10¹² 次，相当于四块这样的显卡破解 NTLM 哈希。如果网站用 bcrypt、Argon2 这类慢哈希保存密码，或者输错几次就锁定账号，所需时间还要再长很多个数量级。

| 单词数 | 比特 | 一块显卡（每秒 10¹⁰ 次） | 四块显卡（每秒 10¹² 次） |
|---|---|---|---|
| 3 | 38.8 | 24 秒 | 不到 1 秒 |
| 4 | 51.7 | 2 天 | 30 分钟 |
| 5 | 64.6 | 45 年 | 165 天 |
| 6 | 77.5 | 35 万年 | 3503 年 |
| 7 | 90.5 | 27 亿年 | 2700 万年 |
| 8 | 103.4 | 2.1 × 10¹³ 年 | 2100 亿年 |

需要背下来的密码，6 个词是合理的默认值。解锁密码库或加密硬盘这种可能遭遇离线攻击的场合，用 7 到 8 个词。3 到 4 个词只适合系统会限制尝试次数的地方。

## 换算成字符有多长

EFF 词表里的单词长 3 到 9 个字母，平均 7 个。6 个词加连字符，总长在 23 到 59 个字符之间，居中是 47 个。这超过了任何最低长度要求，包括美国国家标准与技术研究院（NIST）对单独使用的密码要求的 15 个字符。要留意的是上限：8 个词加分隔符，大约有三分之一的概率超过 64 个字符，有的网站到这里就不再接受输入。NIST 只要求服务至少允许 64 个字符，所以用很长的密码短语时，设置完最好退出再登录一次试试。

## 想要随机字符串？

本页的第二个标签可以生成传统的随机密码，由字母、数字和符号组成，控件和[密码生成器](/zh/mima-shengchengqi/)一样，适合交给密码管理器自动填写的账号。想要更短、又能通过大多数组成规则的单词密码，可以看[好记密码预设](/password-generator/memorable/)；想用真骰子自己掷出单词，[Diceware 页面](/diceware/)列出了每个词对应的骰子点数（两页均为英文）。

## 你的密码短语只在这里

单词在你的浏览器里，从随页面一起下载的词表中选出。生成的内容不会上传、记录或保存，页面也不记得之前的结果。保存之前关掉标签页，它就永远没了，所以请先存好。

## 技术说明

工具用 `crypto.getRandomValues` 为每个词抽一个词表位置。原始随机数的范围不是 7776 的整数倍，落在最上面那段不完整区间的值会被丢弃重抽，因此每个词被抽中的概率严格是 7776 分之一。词表是未经修改的 EFF 大词表，由电子前哨基金会以知识共享署名许可发布，见 [EFF 词表发布说明](https://www.eff.org/deeplinks/2016/07/new-wordlists-random-passphrases)和本站[许可页](/licenses/)（英文）。怎样在浏览器开发者工具里确认生成时没有任何网络请求，见[技术说明页](/zh/yanzheng-fangfa/)。

## 常见问题

### 密码短语真的和随机密码一样强吗？

强度取决于等可能结果的数量，而不是看起来像什么。6 个 EFF 单词是 77.5 比特，相当于用字母、数字和符号组成的 12 到 13 位随机密码。想更强就多加几个词。

### 词表是公开的，有没有关系？

没有关系。计算时已经假设攻击者手里有这份词表。保护来自 6 个词的 2.2 × 10²³ 种组合，而不是来自没人知道词表。

### 不喜欢其中一个词，能自己换掉吗？

重新生成比手动改好。亲手挑词，哪怕只挑一个，也会让结果偏向人们觉得顺眼的词，攻击者可以针对这种偏好建模。整个重新生成，直到有一组记得住为止。

### 要不要在单词里加符号或数字？

除非网站要求，否则不必。把字母换成形近的数字几乎不增加强度，因为破解工具会自动尝试这些替换。多加一个词能增加 12.9 比特，还更好记。

### 为什么网站说我的密码短语太长？

有些服务限制密码长度，有的上限是 64 个字符，甚至更低。可以减少单词数、去掉分隔符，或者看看网站有没有别的登录方式。

### 我看不懂这些英文单词，会影响安全吗？

不会。强度只取决于随机抽取，不取决于词义。不认识的词照样能记：把几个词连成一个有画面的小故事，比如“t-shirt 挂在 brick 上”，通常一两天就记住了。

## 资料来源

2026-10-11 核对。

- [EFF：用于随机密码短语的新词表](https://www.eff.org/deeplinks/2016/07/new-wordlists-random-passphrases)
- [CISA：Use strong passwords](https://www.cisa.gov/secure-our-world/use-strong-passwords)
- [Microsoft Learn：Windows LAPS 密码和口令](https://learn.microsoft.com/zh-cn/windows-server/identity/laps/laps-concepts-passwords-passphrases)
- [NIST SP 800-63B-4](https://pages.nist.gov/800-63-4/sp800-63b.html)
- [hashcat 6.2.6 在 RTX 4090 上的基准测试](https://gist.github.com/Chick3nman/32e662a5bb63bc4f51b847bb422222fd)

Last updated: 2026-10-17
