使用方法
- 选择 随机字符 生成密码,或选择 词组密码 生成由单词组成、便于输入和记忆的密码。
- 生成字符时,设置 长度,并勾选要使用的字符类别。勾选 排除易混字符,读取密码时就不会把 O 和0、I 和1混淆。
- 生成词组时,设置 单词数、分隔符 和 词表。中文页默认使用英文词表,因为本工具没有中文词表,也可以改选土耳其语词表。
- 点击某个密码旁的 复制,或点击 全部复制。页面不保存密码:关闭页面后,密码就没有了。
随机选择的方法
每个字符或单词都由 crypto.getRandomValues 抽取,即浏览器为安全用途提供的随机数。一次抽取是一个32位的数。2的32次方通常不是字符池大小的整数倍,因此代码会把取值范围截取到能被字符池大小整除的最大整数,超出截取部分的数会被重新抽取。若没有这一步,某些字符出现的机会会略多于其他字符。
字符池是所选字符类别的总和:26个小写字母、26个大写字母、10个数字和24个符号,共86个。排除易混字符后,字符池为81个。
熵(字符)= 长度 × log2(字符池大小);熵(单词)= 单词数 × log2(词表大小)
熵值与强度等级
熵值以比特计算。从完整字符池中取20个字符的密码,约有128比特。在最坏情况下,如果攻击者知道长度和字符类别但不知道密码本身,每多一个比特,所需的猜测次数就翻一倍。
强度等级是本页自定的经验规则:低于40比特为弱,40至59为一般,60至79为强,80及以上为很强。这些等级描述的是暴力猜测。出现在常见密码列表中的密码,无论熵值多高都很弱,因此不要重复使用任何密码。
- 从1,024个单词的词表中抽取6个单词,得到60比特,因为每个单词为10比特。
- 单词是随机抽取的,并非人工挑选,因此即使每个单词都很常见,词组也是安全的。不要在其中加入个人的词语或日期。
示例:20个字符和6个单词
四类字符全部选中并排除易混字符时,字符池为81个,因此20个字符的密码为 20 × log2(81),约126.8比特,属于很强。
从英文词表的1,024个单词中抽取6个单词,词组为 6 × 10 = 60比特,属于强。单词是随机抽取的,所以这6个单词与任何60比特的密码一样安全。
常见问题
密码会被保存或发送到服务器吗?
不会。密码在浏览器中生成并显示在页面上,不会被保存、发送或记录。刷新页面后它们就会消失,因此请先复制需要的密码。
为什么要排除易混字符?
大写字母 O 和 I、小写字母 l 以及数字0和1在朗读或手抄密码时很容易混淆。排除它们让密码更容易输入,代价是熵值略有减少。
使用了哪些符号?
符号为 ! @ # $ % ^ & * ( ) - _ = + [ ] { } ; : , . ? /。引号、反斜杠和尖括号未被使用,因为许多表单和程序会拒绝它们,或者把它们读错。
密码应该多长?
从四类字符中随机生成的16个字符的密码,约有103比特,属于很强。建议使用密码管理器,让每个账户都有各自的这类密码,这样就不必记住它们。
词组密码比普通密码更好吗?
这取决于网站。6到8个单词的词组容易记住,并有60到80比特。有些网站不接受空格或过长的密码,因此请查看它们的规则,并使用它们接受的分隔符。
为什么中文页的词组是英文单词?
本工具目前没有中文词表。中文页默认使用英文词表,共1,024个单词,每个单词为10比特。选择土耳其语词表时,同样有1,024个单词可选,强度相同。
资料来源
数据和文字最近核对于2026年11月10日星期二。