密码生成器
选择长度,按需启用大写字母、小写字母、数字和符号,生成器会使用浏览器的加密安全随机数生成器创建密码。这类熵源也用于 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。
相关工具
可复制的箭头符号
一键复制常用 Unicode 箭头:直线、双线、斜向、钩形、环形和三角样式,适合文档、聊天和设计。
小于或等于符号
复制 ≤ 符号及相关数学比较符号。包含适用于电子表格、论文和网页的 Unicode、HTML 实体及 LaTeX 标记。
适合阅读障碍者的文本转换工具
将粘贴的文本重新排版为短段落和约72个字符的行,便于阅读。将结果复制到任何文档、邮件或编辑器中。
域名生成器
根据一个关键词生成域名创意:在六种常见 TLD 中组合前缀、后缀、重复字母和数字结尾。
泰语数字转文字工具
在浏览器本地将最多 18 位数字写成泰语,或用 ASCII 数字或泰文数字将准确的泰铢和萨当金额写成文字,不进行舍入。
从文本中提取数字
从文本块中提取所有数字(包括整数、小数、带符号数值和货币值),去重后即可直接粘贴。
此工具还提供其他语言版本
- パスワード生成ツール [JA]
- 비밀번호 생성기 [KO]
- Generator haseł [PL]
- เครื่องมือสร้างรหัสผ่าน [TH]
- Generador de contraseñas [ES]
- Gerador de senhas [PT]
- Lösenordsgenerator [SV]
- Trình tạo mật khẩu [VI]
- مولد كلمات المرور [AR]
- Générateur de mots de passe [FR]
- Passwortgenerator [DE]
- Generator Kata Sandi [ID]
- Wachtwoordgenerator [NL]
- Password Generator [EN]
- Generatore di password [IT]
- Генератор паролей [RU]
- Parola Oluşturucu [TR]