强密码生成器
生成最长 64 位、难以破解的强密码,完整控制符号种类与熵值。
强密码生成器默认 20 位
这个强密码生成器打开时会生成一个 20 位的密码,包含大写字母、小写字母、数字和 25 个符号,字符池共 87 个字符;滑块最长到 64 位。页面没有显示强度,下表列出各长度在这个字符池下的强度,以及取消“符号”(剩 62 个字符)后的强度:
| 长度 | 四类字符全选 | 仅字母和数字 |
|---|---|---|
| 20 | 128.9 bit | 119.1 bit |
| 24 | 154.6 bit | 142.9 bit |
| 32 | 206.2 bit | 190.5 bit |
| 64 | 412.3 bit | 381.1 bit |
不用符号又想保持同样的强度,加两位即可:22 位字母加数字约 131.0 bit,比默认的 20 位还略高。
按账号的重要程度选长度
- 邮箱和密码管理器的主密码:它们能打开其他所有账号,默认的 20 位可以当作最低要求。如果主密码需要经常手动输入,用多个词组成的口令可能更合适,本工具不生成这种口令。
- 管理员、root 和数据库账号:24 到 32 位。这类密码没人靠记忆输入,加长没有任何成本。
- 保存在密钥库里的服务账号和密钥:只要系统接受,32 到 64 位都可以。
- 加密的备份压缩包:设长一些,并存放在五年后还能找到的地方。密码丢了,备份也就打不开了。
确认整段密码都被接受了
长密码失败的方式往往很隐蔽:有的表单超过最大长度会直接截断而不提示,有的系统注册时接受某个符号,登录时却不认。离开页面前请按顺序做三件事:
- 把密码粘贴进表单并保存。
- 把密码存进密码管理器。
- 退出登录,再用存下来的密码重新登录一次。
如果第 3 步失败,多半是输入框有长度限制或禁用了某个字符。查到对方允许的最大长度,把滑块拉到这个值,必要时取消“符号”,然后再点“生成新密码”。只拖动滑块不会生成新密码。
每个字符是怎么选出来的
每一位都从浏览器的密码学随机数生成器 crypto.getRandomValues 取一个 32 位的值,再取余映射到 87 个字符上。这种映射带来的偏差大约是一亿分之二,不影响上面任何一个数字。密码在页面里生成,不会发送到任何地方。
每一位都是独立抽取的,所以工具不保证每种字符都出现。20 位时,大约每 100 个密码中有 9 个至少缺一种字符,通常是数字。如果网站坚持要求,请重新生成,而不是手动改动结果。
常见问题
64 位的密码是不是太长了?+
需要手动输入的密码,通常确实没必要。只给机器读的密钥,比如保存在配置密钥库里的数据库密码,加长不花任何代价,很多系统也都接受。
能一次生成多个强密码吗?+
不能,每次点击生成一个。给每个账号分别点一次“生成新密码”,存好一个再生成下一个。
会检查密码有没有出现在泄露库里吗?+
不会。密码不会发送到任何地方,所以无法和任何在线名单比对。这么长的新生成随机密码,出现在泄露库里的可能性极小。
强密码需要定期更换吗?+
有原因时再换:收到泄露通知、在共用设备上用过,或者有不该再有权限的人知道了它。足够长的随机密码不会因为时间久了就变弱。