密码生成器多少位够用:按字符集与熵值算,附长度对照表和四类账号下限
「密码生成器多少位够用」看起来是个数字问题,实际上要拆成三个变量:你要防的是谁、这个账号丢了会连带损失什么、网站允许你填多长。同一个 16 位随机串,用在论坛和用在主邮箱,价值完全不同。
所以本文不给一个万能数字,而是给一张按账号类型查的下限表,外加一条多数教程没讲的事:位数只解决「猜」,解决不了「拿到」。生成之后的处置动作,比位数更影响结果。
一、先算一眼:位数到底换来多少空间
随机密码的强度用熵衡量,公式很简单:熵 ≈ 长度 × log₂(字符集大小)。字母大小写加数字是 62 个字符,每位约 5.95 bit;再算上常见符号(约 94 个),每位约 6.55 bit。
| 长度(62 字符集) | 熵值 | 面对离线爆破的直观含义 | 够用在哪 |
|---|---|---|---|
| 8 位 | 约 48 bit | GPU 集群下是分钟级 | 哪都不够,已过时 |
| 12 位 | 约 71 bit | 需要相当算力才可能命中 | 低频、无支付的小论坛 |
| 16 位 | 约 95 bit | 实际不可穷举 | 绝大多数普通账号的默认值 |
| 20 位 | 约 119 bit | 远超任何现实攻击 | 邮箱、主账号、云盘 |
| 24 位以上 | 140 bit 以上 | 意义上已饱和 | 加密容器、恢复密钥、API token |
能看出规律:从 12 到 16 位只是「更难」,从 8 到 12 是「从不行到行」的质变。真正该记的不是某个绝对值,而是够用即停——超过 20 位,收益已经不在猜测难度上,而在别的地方。
二、按账号类型定下限:四档就够
不用给每个网站单独设计,分成四档即可。判断标准只有两条:这个账号能不能重置别的账号(邮箱、手机号类),它背后有没有钱或不可再生数据(支付、云盘、密码库)。
- 普通网站 16 位:论坛、购物、资讯。要求 62 字符集即可,不必强塞符号——很多站点的校验规则会吃掉特殊字符。
- 身份枢纽 20 位:主邮箱、Apple ID / Google 账号、运营商账号。这些一旦被接管,攻击者可以「重置一切」,是最值得加长的一档。
- 资产与不可再生数据 20~24 位:网银、券商、云盘、代码仓库。位数拉满的同时务必开双重验证,见双重验证专题。
- 主密码反向处理:密码管理器的主密码不要用随机串。它每天要手输,忘了就是全库报废,用量词短语更合理,参见密码短语怎么设置。
至于「每个网站能不能都用同一个 20 位串」——绝对不行。位数再高,一旦某个站被拖库,撞库脚本会拿它去试所有站。生成的本质意义是一账号一串,长度只是附带收益。
三、位数解决不了的四件事
这是多数「多少位够用」的文章漏掉的部分:泄露很少来自「被猜中」,更多来自过程中的人为环节。
| 泄露路径 | 典型场景 | 对策 |
|---|---|---|
| 剪贴板残留 | 复制密码后忘记清空,被其他应用读取 | 用密码管理器自动填充,少用复制 |
| 「查强度」页面 | 把真密码粘进不明网站测强度 | 只在本地或可信管理器里看强度 |
| 截图与聊天记录 | 把生成的密码发给同事、发到群里 | 改用共享库或一次性链接 |
| 站点存明文 / 弱哈希 | 站点被拖库,密码原样流出 | 无解,只能靠不复用把损失限制在一个站 |
最后一行值得多说一句:你无法控制对方怎么存。所以真正的策略是假设每个站都会泄露,让每次泄露只影响那一个账号。这也是为什么「强密码」和「不复用」必须同时成立。
四、网站限长怎么办
不少老站点只收 12 位、禁用符号,甚至对特殊字符做截断。遇到这类情况,按下面的优先级处理,别硬凑:
- 先看真实上限:注册页的 maxlength 不一定等于后端上限,可以先用 16 位试,报错再降。
- 降长度不降随机性:长度受限时保持纯字母数字的随机串,别再追求符号,反而更容易被截断。
- 在条目备注里记下实际位数:否则下次自动填充失败,你会以为是管理器出问题。
- 把这类站单独标记:限长往往意味着系统老旧,这类账号更要开双重验证,因为后端安全能力也大概率偏弱。
五、挑生成器的五个抽查项
位数由你决定,随机性由工具决定。选在线生成器或管理器内置生成器时,花一分钟核对这五项:
- 是否本地生成:页面明确说明「在浏览器本地生成、不上传」才用。
- 字符集可选:能分别开关大小写、数字、符号,并排除易混字符(l/1/I、0/O)。
- 是否显示熵值或强度:只给「强/中/弱」三档的,参考价值有限。
- 一次一密:刷新即换新串,不复用上一次的结果。
- 没有多余请求:生成过程不应把结果写进 URL 参数或第三方统计。
在线工具只适合「临时要一个」,长期方案还是放进密码管理器统一生成与填充,选择标准见密码管理器哪个好用。
六、常见问题
16 位纯数字够吗?
不够。纯数字每位只有约 3.3 bit,16 位约 53 bit,大致相当于 9 位混合字符。位数看着多,实际强度被字符集拖下来。除非对方强制只用数字(例如某些 PIN),否则优先混合字符。
加了符号是不是就能少两位?
不能这么换。符号把每位熵从 5.95 提到 6.55,加两位长度带来的提升更大。长度和字符集不是等价兑换,长度优先级始终更高。
同一个网站有两个账号,能用同一串吗?
不行。同站复用同样会在一处泄露后连带另一个账号,而且很多站在「密码与历史重复」时会拒绝。管理多账号见一个邮箱注册多少网站算多。
生成后多久该换?
没有泄露迹象就不用定期换。该换的信号是:站点被拖库、你在别处见过同一个密码、设备可能被入侵。判断标准见密码多久换一次。
小结
密码生成器多少位够用,答案可以压缩成一句:普通账号 16 位、身份枢纽 20 位、资产类 20~24 位、主密码改用长短语。位数决定「猜不猜得中」,一账号一串决定「丢一个会不会全丢」,而生成之后的复制、截图、填错站,才是现实中更常见的破口。