PassGen.co

语言

密码短语生成器

  • 7 个单词

免费随机密码短语生成器(passphrase generator)

用这款密码短语生成器(passphrase generator),将随机单词组合成易记、易输入、难猜的密码。它采用安全的随机数生成器,如实计算密码强度,让 xkcd 的思路和 Diceware 方法得到正确应用。默认使用七个随机单词,强度足以应对几乎所有需要手动输入密码的场景。

你可以选择 3 到 12 个单词,设置单词之间的分隔符、是否使用大写字母、是否添加数字或符号,以及最大长度。单词支持英语和其他九种语言。不喜欢某个单词?点一下就能单独替换它。密码短语在你的设备上生成,绝不会发送到任何地方。

跳转至:适合哪些用途? · 需要几个单词? · 三个随机单词 · 如何记住密码短语 · 常见问题

密码短语用来做什么?

密码短语适合用作需要亲手输入的密码。选择用途,生成器就会按相应设置打开。

需要多少个单词?

每增加一个单词,密码短语被猜中的难度就会提高约 7,400 倍,因为攻击者必须为每个位置尝试词表中的所有单词。默认的七个随机单词适用于几乎所有需要手动输入密码的场景:电脑登录、Wi-Fi 或 SSH 密钥。对于密码管理器或加密磁盘,请使用八个单词。三个或四个单词只适用于会阻止反复错误尝试的账户,具体原因见下文。

生成器下方显示的时间按最不利的情况估算:攻击者知道你的词表,并且拿到了可在自己的电脑上不限次数尝试破解的副本,例如从网站窃取的密码列表或复制的加密文件。对于生成器中显示的密码短语,破解需要多久取决于谁在尝试:

你的密码短语7 个单词英语

1 张显卡
9,800 万年
很强
相当于一台高性能游戏电脑的配置
1,000 张显卡 你的评级
98,000 年
强
按小时租用,例如犯罪团伙可能采用的方式
100,000 张显卡
980 年
强
相当于政府或大型科技公司的规模。没有人公开这些数字。

攻击有完善防护的网站或设备要慢得多:它们会阻止反复输错密码的尝试,并以一种能拖慢猜测速度的形式存储密码。不过,你无法知道网站如何存储你的密码,所以不要指望这一点。

大写字母几乎不会增加安全性,因为攻击者也可以将每个单词的首字母改为大写。加一个数字或符号能略微提高安全性,再加一个单词的效果最好。如果网站有长度限制,请打开不限长度并选择相应的长度限制:生成器就只会生成符合限制的密码短语,显示的强度也会相应降低。

用3个单词做密码够安全吗?

英国国家网络安全中心(NCSC)建议大家使用“三个随机单词”,现在也有不少人在寻找3单词密码生成器。对于这条建议所针对的场景,它是合理的:在线账户会阻止反复猜测密码,最好还启用了两步验证。通过登录页面以每秒尝试 10 次的速度猜测三个随机单词组成的密码,大约需要 650 年。

问题在于数据泄露。如果网站存储的密码哈希值被盗,同样的三个单词不到 1 秒就会被破解,即使加上大写字母、一个数字和一个符号,也几乎无济于事。因此,只在 NCSC 所指的场景中使用三个单词。对于密码管理器、电脑登录、Wi-Fi 或加密磁盘,请使用七个或更多单词。上方的三个随机单词示例会打开采用 NCSC 建议设置的密码短语生成器,强度提示也会如实显示这种密码有多弱。

真正做对了的 xkcd 密码生成器

那幅著名的 xkcd 漫画提出,四个随机的常用单词比“Tr0ub4dor&3”更容易记住,也更难破解。这个思路没错,但漫画中的数字只是示例:从包含 2,048 个单词的词表中随机选出四个单词,只有 44 位熵,一张显卡不到一分钟就能穷尽所有组合。

这款密码短语生成器保留了这个思路,并改进了具体参数:词表包含约 7,400 个单词,而不是 2,048 个;默认生成七个单词,而不是四个;单词不重复;使用安全的随机数生成器,而不是让人自己挑选。七个单词可提供约 90 位熵:即使用 1,000 张显卡,也需要约 100,000 年才能破解。

最关键的是“随机”。人们自己选单词时,往往会选择歌词、名言、人名和地名,而破解工具会优先尝试这些组合。就连漫画中的“correct horse battery staple”,如今也已在泄露数据中出现了数千次。随机选出的单词没有规律可循,所以即使攻击者知道你用了 PassGen.co,上面的计算结果依然成立。已经在用自己编的密码短语了?用密码强度检测器测一测。

如何记住密码短语

  • 想象一个画面。 把这些单词按顺序串成一个简短、滑稽的场景。比如,一只海象提着灯笼站在峡谷里,就比七个孤立的单词好记得多。
  • 刚开始时多输入几遍。 第一周每天用几次。之后,手指就会形成肌肉记忆。
  • 还没记熟时,先写下来。 把纸放在家里,千万别和它所解锁的设备放在一起,等熟记密码短语后再把纸销毁。
  • 保留分隔符。 连字符或空格能帮你看出哪里输错了,保留它们也没有什么代价。

用你熟悉的语言生成密码短语

熟悉的单词更容易记忆和输入。点击地球图标按钮,即可选择词表:英语、德语、西班牙语、法语、意大利语、葡萄牙语、加泰罗尼亚语、荷兰语、乌克兰语或俄语。每种语言的主词表都包含约 5,900 到 7,700 个单词,因此使用其中任何一种语言生成的密码短语,强度都与英语密码短语接近,生成器下方的强度也会根据你所选词表的实际单词数计算。

乌克兰语和俄语词表也提供拉丁字母版本,因为加密笔记本电脑的启动界面、电视或路由器的管理页面往往只支持美式键盘布局。如果无法在这些界面输入密码短语,你就无法解锁或登录。出于同样的原因,在正式使用磁盘加密密码短语之前,请先在启动界面测试能否输入,或者选择不含重音符号的词表。

英语(短单词)使用三到五个字母的单词,在手机或电视遥控器上输入更快。但由于可选单词较少,每个单词带来的强度也较低,因此需要使用九个短单词,才能达到主词表中七个单词的强度。

工作原理:技术细节

供想了解具体细节的读者查阅。

安全的随机性

每个单词都通过 crypto.getRandomValues() 选取,并使用拒绝采样,确保每个单词被选中的概率完全相同。如果抽到的单词已在密码短语中,就重新抽取,因此不会出现重复单词

强度估算

根据当前设置能生成的不同密码短语的精确数量来计算。未设置最大长度时,从包含 N 个单词的词表中选词,可能的组合数为 N × (N − 1) × …,相乘的项数等于密码短语的单词数。在单词之间加入随机数字,每个间隔会让组合数乘以 10;“添加数字”会让组合数乘以 10 × 单词数(选择哪个数字、加在哪个单词上);“添加符号”会让组合数乘以 8 × 单词数(从 ! @ # $ % ^ & * 中选择一个符号,再选择加在哪个单词上)。大写字母不会增加强度,自定义分隔符也不会,因为它是你自己选定的。强度位数 = 组合数的 log2。破解时间 = 2位数 − 1 ÷ (2 × 1014) 秒,按 1,000 张显卡计算。

最大长度

生成器根据词表中各单词的长度,精确计算符合长度限制的密码短语数量,再从中随机抽取一个,每个符合条件的密码短语被选中的概率都相同。强度按符合条件的密码短语数量计算

更换单词

每个单词更换 k 次,强度就降低 log2(k + 1) 位。这是在 k + 1 个单词中自行选择一个最多可能损失的强度

与骰子组合数对应的词表

大多数词表最初包含 7,776 个单词,即 6 × 6 × 6 × 6 × 6,对应五枚骰子所有可能的点数组合。这就是 Diceware 方法:掷五枚骰子,再根据点数查找单词。西班牙语、意大利语和加泰罗尼亚语词表各有 8,192 个单词,英语短词表有 1,296 个,对应四枚骰子的组合数。由于词表经过了下述筛选,生成器使用浏览器的随机数生成器选词,而不使用骰子点数

词表筛选

含有分隔符的单词(如“yo-yo”)会被移除,以免单词之间的边界变得模糊。人名和地名也会被移除,即使词表中用小写字母书写也不例外。此外,考虑到你可能需要把密码短语读出来,疾病、毒品、武器、侮辱性用语等让人不适或尴尬的词也会被移除。可用单词数:英语 7,424,英语(短单词)1,234,德语 6,947,西班牙语 5,962,法语 7,347,意大利语 7,667,葡萄牙语 7,429,加泰罗尼亚语 7,186,荷兰语 7,337,乌克兰语 7,430,乌克兰语(拉丁字母)7,480,俄语和俄语(拉丁字母)各 7,608。强度计算使用这些数量,因此仍然准确。

词表

英语使用 EFF 长词表(CC BY 4.0),英语(短词)使用 EFF 短词表 1(CC BY 3.0 US)。德语、西班牙语、意大利语和加泰罗尼亚语词表来自 ulif diceware 词表(CC BY),法语词表来自 Tails 项目(CC0),荷兰语词表来自 mko.re(CC BY),乌克兰语词表来自 git-leaf(MIT)。俄语词表是专为 PassGen.co 基于 OpenRussian.org 数据(CC BY-SA 4.0)编制的,葡萄牙语词表则基于 OpenSubtitles 词频数据(hermitdave/FrequencyWords)和葡萄牙语维基百科(CC BY-SA 4.0)编制

常见问题

好的密码短语示例是什么?

例如 velvet-harbor-sketch-lantern-cactus-walrus-canyon:七个彼此无关、也与你无关的单词。不要使用任何公开过的示例,包括这个。请在上方生成你自己的密码短语。

四个单词的密码短语安全吗?

只有在限制错误尝试次数的情况下才安全,例如输错几次就会锁定的手机。如果密码短语的哈希值被盗,四个单词的密码短语几秒内就可能被破解。账户请使用七个单词;如果用于保护其他密码,请使用八个单词。

密码短语和密码有什么区别?

密码通常是由多种字符混合组成的较短字符串;密码短语则是由单词组成的较长字符串。密码短语就是大多数人所说的易记密码。在强度相同的情况下,密码短语更长,但更容易输入和记忆。需要自己输入时,使用密码短语;使用随机密码,让密码管理器自动填入。

这是 Diceware 生成器吗?

它使用相同的方法:从按掷骰子结果数量设计的词表中随机抽取单词。这类词表大多包含 7,776 个单词,对应五颗骰子所有可能的结果组合。它不需要你掷骰子,而是使用浏览器的安全随机数生成器,同样随机,而且快得多。显示的强度根据实际使用的词表计算。

为什么密码短语很长,显示的破解时间却很短?

强度取决于当前设置能生成多少种密码短语,而不是包含多少个字母。攻击者会按词表中的整个单词来猜测,因此长单词并不比短单词更安全,把每个单词的首字母都改成大写也不会增加强度。每增加一个单词,破解时间就会变为原来的约 7,400 倍。

可以只替换一个单词吗?

可以。轻触或点击那个单词,或者用方向键移到它上面,再按回车键。只有这个单词会改变。每次替换后,显示的强度都会略微降低,因为经过你挑选的单词,其随机性比未经挑选的单词稍低。

可以一次生成多个密码短语吗?

可以。展开结果下方的多个密码短语,最多可选择生成 16 个,每个都有独立的复制按钮。如果需要为整个班级或公司生成密码,批量密码生成器一次最多可生成 1,000 个,并可导出为适用于 Microsoft 365、Google Workspace 或 Active Directory 的格式。

密码短语中可以使用空格吗?

通常可以。大多数网站、操作系统和加密工具都接受空格。少数旧系统会删除或拒绝空格,因此不确定时请使用连字符。如果网站也不接受连字符,请选择“自定义”,然后输入它接受的字符。无论使用哪种分隔符,强度都相同。

如何为 SSH 或 GPG 密钥添加密码短语?

对于已有的 SSH 密钥,运行 ssh-keygen -p -f ~/.ssh/id_ed25519,并在出现提示时粘贴密码短语。对于 GPG,运行 gpg --passwd,并在命令后加上你的密钥 ID。创建新密钥时,系统会提示你设置密码短语。

可以用它生成加密货币钱包的助记词吗?

不可以。由 12 或 24 个单词组成的恢复助记词必须由你的钱包生成。钱包使用专用词表和内置校验和,因此这里生成的单词不能用作有效的助记词。某些钱包提供的可选 BIP39 密码短语则不同:它由你自行选择,因此这里生成的密码短语很适合用于此用途。请像保管恢复助记词一样妥善保管它,因为没有它就无法恢复钱包。

在线生成密码短语安全吗?

在这里是安全的。密码短语由浏览器中运行的代码生成,绝不会发送给我们。页面加载完成后,即使没有网络连接也能使用,因此如果想更放心,你可以先断网,再生成密码短语。

单词间隔

大写字母、一个数字、一个符号

适用于有这些要求的网站。Abc 将每个单词的首字母大写,123 添加一位数字,!@# 添加一个符号(! @ # $ % ^ & *),数字和符号各自添加到随机单词的末尾。这些设置能略微提高强度;多加一个单词的提升更大。

最大长度

适用于有长度限制的网站。只能使用较短的单词,因此密码短语的强度会降低。

密码短语数量

需要超过 16 个?批量密码生成器

词表

QR 码

用手机相机扫描,即可在手机上获取密码。

想制作 Wi-Fi 标牌?使用此密码