反馈

强密码应该多长:密码强度和信息熵

"密码强度"看起来是个模糊的感觉,但其实有一个精确的数学定义——信息熵。知道这个概念,就能理解为什么"长度"往往比"复杂符号"更重要。


目录

  1. 信息熵:用"需要试多少次"衡量强度
  2. 字符集大小和长度:谁的影响更大
  3. 常见的弱密码陷阱

1. 信息熵:用"需要试多少次"衡量强度

密码强度的数学度量叫信息熵,单位是"比特"(bit),本质上衡量的是"攻击者靠暴力枚举,平均需要尝试多少种组合才能猜中这个密码"。计算公式是:

信息熵(bit) = log2(字符集大小 ^ 密码长度)
             = 密码长度 × log2(字符集大小)

熵值每增加 1 bit,需要尝试的组合数就翻一倍——熵值 40 bit 意味着大约需要尝试 2⁴⁰(约 1 万亿)种组合才能穷举完,这个数字越大,暴力破解需要的时间和算力成本越高。

2. 字符集大小和长度:谁的影响更大

从公式可以看出,信息熵由两个因素决定:字符集大小(密码里能用的字符种类数,比如只用小写字母是 26,加上数字符号能到 90+ 种)和密码长度。这两者对熵值的影响方式不同——字符集大小是乘法级贡献(每多一种可选字符,熵增加 log2(字符集大小/原字符集大小) 这样的增量),而长度是指数级贡献(每多一位字符,可能的组合数直接翻若干倍)。这也是为什么"密码更长"往往比"字符种类更复杂"对提升强度的效果更明显——一个 16 位纯小写字母密码的熵值,通常比一个 8 位包含大小写数字符号的"复杂"密码更高,因为长度带来的指数级增长远超字符集扩大带来的线性增益。

3. 常见的弱密码陷阱

即便密码在数学意义上熵值不低,实际使用中依然存在几类容易被针对性攻击利用的弱点:

  • 常见词典密码password123qwerty 这类密码理论熵值可能不算太低,但因为出现频率极高,攻击者会优先用"字典攻击"(枚举已知常见密码列表)而不是纯粹的暴力穷举,实际破解难度远低于理论熵值暗示的水平
  • 可预测的字符替换:把"password"里的 a 换成 @o 换成 0 这类常见的"看起来复杂"的替换规则,早就被主流密码破解字典收录,几乎不增加实际的破解难度
  • 易混淆字符的输入问题:密码里如果同时包含容易看错的字符(数字 0 和字母 O、数字 1 和字母 l),虽然不影响理论熵值,但会显著增加人工输入错误的概率,这也是为什么很多密码生成工具提供"排除易混淆字符"选项——牺牲一点点理论熵值,换来更低的输入出错率,这在实际使用体验上是合理的取舍

总的来说,衡量一个密码是否足够安全,理论熵值只是基础门槛,还需要避开这些"熵值虚高但实际脆弱"的模式,两者结合才是真正意义上的强密码。


在线工具:随机密码生成