跳到正文
StartPrivate
菜单
语言:ZH

密码短语生成器

在你的设备上从 EFF 大词表随机抽取英文单词,默认 6 个。单词数、分隔符和大小写都可以按要输入的地方调整。

在你的设备上运行,文件不会上传。 怎样自己验证

生成什么

熵 77.5 比特

6 × log2(7776) = 77.5 比特

单词之间

用 crypto.getRandomValues 在本机生成。生成的内容不会保存,也不会发送。

从 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 个字符,所以用很长的密码短语时,设置完最好退出再登录一次试试。

想要随机字符串?

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

你的密码短语只在这里

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

技术说明

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

常见问题

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

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

词表是公开的,有没有关系?

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

不喜欢其中一个词,能自己换掉吗?

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

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

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

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

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

我看不懂这些英文单词,会影响安全吗?

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

资料来源

2026-10-11 核对。

最后更新: