密码生成器
自定义长度、数字、符号和大写字母,生成强随机密码。本地生成,不发送至任何地方。
随机密码生成器的每个选项值多少强度
密码生成器先把你勾选的字符类型合成一个字符池,再从池里随机抽出每一个字符。默认长度 16 位,四个选项全选。下表是 16 位密码在本工具实际字符集下的强度,单位是比特(bit),每多 1 比特,暴力猜中的难度就翻一倍:
| 勾选的选项 | 字符池大小 | 16 位时的强度 |
|---|---|---|
| 大写字母、小写字母、数字、符号 | 87 | 103.1 bit |
| 大写字母、小写字母、数字 | 62 | 95.3 bit |
| 小写字母、数字 | 36 | 82.7 bit |
| 仅小写字母 | 26 | 75.2 bit |
| 仅数字 | 10 | 53.2 bit |
字符池由 26 个小写字母、26 个大写字母、10 个数字和 25 个符号组成。如果四项全都不勾,工具会退回到只用小写字母,保证不会生成空结果。
改了设置,要点“生成新密码”
页面打开时会自动生成一个密码。之后拖动“长度”滑块或勾选选项,现有密码并不会变。调整好之后请点击生成新密码,再用输入框旁边的复制按钮复制。长串随机密码手动抄写很容易出错。
每个字符都来自 crypto.getRandomValues,也就是浏览器的密码学安全随机数。密码只存在于当前页面,刷新或重新生成就会被替换,没有历史记录可以找回,所以离开页面前请先存进密码管理器。
注册时提示“密码必须包含数字”
工具不会强制每种字符至少出现一个。每一位都从整个字符池里抽取,所以生成的密码可能恰好没有数字。四项全选、长度 16 位时,大约每 100 个密码中有 15 个至少缺一种字符类型,缺的几乎都是数字;长度 8 位时约有一半。
如果网站拒绝,看一眼有没有数字和符号,然后再点一次生成。不要在末尾手动补一个 1,这会让最后一位变得可预测,白白损失一部分随机性。
符号在命令行和配置文件里可能出问题
符号集里有 $ & ; < > 和各种括号,它们在 Shell、.env 文件和一些配置格式里有特殊含义。符号集里没有引号、反斜杠、反引号、空格和竖线,已经避开了最麻烦的几种。
如果密码要写进命令行或配置文件,要么在那里用单引号把它括起来,要么取消勾选“符号”,再把长度加两位来弥补:18 位不含符号的密码约 107.2 bit,比 16 位含符号的还略高。
常见问题
能排除 l、1、I、O、0 这类容易混淆的字符吗?+
本工具不能。如果密码需要在电视上输入或口头念给别人,可以只用小写字母和数字,并把长度加长,这样易混淆的组合会少很多。
刷新页面后密码为什么变了?+
每次打开页面都会重新生成一个,而且什么都不保存。关闭或刷新之前请先复制保存。
最长能生成多少位的密码?+
滑块范围是 6 到 64 位。有些网站的长度上限更低,保存后最好用存下来的密码登录一次,确认整段都被接受了。
用拼音加生日当密码安全吗?+
不安全。拼音、姓名缩写、生日、手机号和 123456 这类组合都是破解时最先尝试的。6 位纯数字只有 100 万种可能。为每个账号单独生成一个随机密码,再交给密码管理器保管,才是可靠的做法。