密码生成器
选择长度,按需启用大写字母、小写字母、数字和符号,生成器会使用浏览器的加密安全随机数生成器创建密码。这类熵源也用于 SSL 密钥生成和加密钱包。没有可预测的伪随机数,也不会把密码发送到服务器。包含四类字符的 16 位密码大约有 95 位熵,足以抵抗当前硬件上的离线破解。
强密码是如何生成的
-
1
选择长度
默认值为 16。重要账户使用少于 12 个字符会偏弱。
-
2
选择字符类别
大写字母、小写字母、数字和符号。类别越多,每个字符的熵越高。
-
3
可选:排除易混淆字符
如果需要从屏幕手动输入到终端或设备,请排除 0/O 和 1/l/I。
-
4
生成
crypto.getRandomValues() 会从允许的字符集中均匀选择每个字符。
-
5
复制并保存
立即粘贴到密码管理器中。不要重复使用。
按长度和字符集计算的熵
| 长度 | 仅小写字母 | 小写字母 + 数字 | 小写 + 大写 + 数字 | 四类全部 |
|---|---|---|---|---|
| 8 | 38 位 | 41 位 | 48 位 | 52 位 |
| 12 | 57 位 | 62 位 | 71 位 | 79 位 |
| 16 | 75 位 | 83 位 | 95 位 | 105 位 |
| 20 | 94 位 | 103 位 | 119 位 | 131 位 |
| 24 | 113 位 | 124 位 | 143 位 | 158 位 |
熵在实际中意味着什么
- 40 位:如今单块 GPU 可能在几天内破解。只适合临时账户。
- 60 位:能抵抗在线攻击,但对专门的离线破解仍然脆弱。
- 80 位:面对当前硬件的离线破解已经很强。
- 100 位:在量子计算成熟之前,实际攻击价值很低。
- 128 位:相当于 AES-128 密钥强度。
对大多数在线账户来说,使用完整字符集生成 16 位密码(105 位熵)已经绰绰有余。银行账户、密码管理器主密码、加密钱包和全盘加密值得使用 20 位或更长密码。
为什么字符类别很重要
每增加一类字符,就会增加每个位置的可选项。只有 26 个小写字母时,一个字符贡献 log₂(26) = 4.7 位。加入大写字母后有 52 个字符,每字符 5.7 位。加入数字后有 62 个字符,每字符 5.95 位。加入符号后达到 94 个字符,每字符 6.55 位。在 16 个字符上,这个差距会累积到约 30 位,也就是“可以破解”和“不值得尝试”的区别。
什么时候应排除易混淆字符
如果密码需要从屏幕手动输入到无法复制粘贴的设备,例如控制台安装器、某些硬件钱包,或需要大声读出密码的场景,排除 0、O、1、l 和 I 可以减少抄写错误。熵损失很小,通常只是 80 多位中的 2-3 位。
配合密码管理器的流程
- 安装 Bitwarden、1Password 或 KeePass 等密码管理器。
- 设置强主口令,使用 6-8 个随机单词。也可以使用口令短语生成器。
- 每个网站都使用管理器内置的生成器,并保留强默认设置。
- 不要在不同网站重复使用密码,即使是看起来临时的账户也不要。
- 所有支持 2FA 的服务都启用 2FA。
需要手动输入的密码应尽量少:密码管理器主密码、全盘加密密码,以及可能的工作电脑登录密码。
帮助不大的做法
- 每 90 天强制更换。 强制轮换容易促成 夏季2024 到 秋季2024 这样的可预测模式。NIST SP 800-63B 明确不建议这样做。
- 写在纸上放进钱包。 这比重复使用弱密码安全,但不如密码管理器。
- 安全问题使用真实答案。 “第一所学校”往往可以通过搜索找到。请生成随机的虚假答案,并保存在密码管理器中。
常见问题
使用四类字符(小写字母、大写字母、数字、符号)的 16 位密码,对几乎任何账户都足够强。密码管理器主密码、加密钱包和全盘加密建议使用 20 位或更长。少于 12 位无论复杂度规则如何都偏弱。
密码使用 Web Crypto API 在浏览器内生成,不会发送到任何地方。你可以打开 DevTools 的 Network 面板检查。即便如此,也建议立即复制到密码管理器,而不是截图保存或通过邮件发送。
因为数据泄露。一旦某个网站泄露密码,攻击者会立刻在数百个其他网站尝试同一组邮箱和密码。每个网站使用独立密码,可以把损失限制在一个账户内。
为该网站生成一个随机 16 位密码。16 位或更短的上限通常是该网站密码处理方式的警示信号,因此尤其要在那里启用 2FA。
相关工具
字数统计器
统计单词、字符、句子和段落数,并提供阅读时间、朗读时间、关键词密度,以及面向论文、帖子、配文和元描述的 Flesch 易读性评分。
字符计数器
统计任意文本中的字符、词语、行、句子和段落。查看含空格、不含空格的总数,以及字符类型明细。
气泡文字生成器
将普通文本转换为可复制粘贴的气泡字母(Ⓐ Ⓑ Ⓒ),用于 Instagram、TikTok 和 Discord 简介。支持空心、填充和小写样式,无需任何应用。
盲文翻译器
将文本翻译为 Unicode 一级盲文,并将盲文解码还原为字母。可处理大写字母、数字和标点符号,全部在浏览器中完成。
书名生成器
通过类型、基调、关键词和副书名设置,为小说、回忆录和非虚构作品生成书名创意,几分钟内整理出候选清单。
字母重组求解器
粘贴打乱的字母,或谜题式填字的字母素材线索,获取所有可组成的有效英语单词,并按长度排序。