"密码强度"看起来是个模糊的感觉,但其实有一个精确的数学定义——信息熵。知道这个概念,就能理解为什么"长度"往往比"复杂符号"更重要。
密码强度的数学度量叫信息熵,单位是"比特"(bit),本质上衡量的是"攻击者靠暴力枚举,平均需要尝试多少种组合才能猜中这个密码"。计算公式是:
信息熵(bit) = log2(字符集大小 ^ 密码长度)
= 密码长度 × log2(字符集大小)
熵值每增加 1 bit,需要尝试的组合数就翻一倍——熵值 40 bit 意味着大约需要尝试 2⁴⁰(约 1 万亿)种组合才能穷举完,这个数字越大,暴力破解需要的时间和算力成本越高。
从公式可以看出,信息熵由两个因素决定:字符集大小(密码里能用的字符种类数,比如只用小写字母是 26,加上数字符号能到 90+ 种)和密码长度。这两者对熵值的影响方式不同——字符集大小是乘法级贡献(每多一种可选字符,熵增加 log2(字符集大小/原字符集大小) 这样的增量),而长度是指数级贡献(每多一位字符,可能的组合数直接翻若干倍)。这也是为什么"密码更长"往往比"字符种类更复杂"对提升强度的效果更明显——一个 16 位纯小写字母密码的熵值,通常比一个 8 位包含大小写数字符号的"复杂"密码更高,因为长度带来的指数级增长远超字符集扩大带来的线性增益。
即便密码在数学意义上熵值不低,实际使用中依然存在几类容易被针对性攻击利用的弱点:
password123、qwerty 这类密码理论熵值可能不算太低,但因为出现频率极高,攻击者会优先用"字典攻击"(枚举已知常见密码列表)而不是纯粹的暴力穷举,实际破解难度远低于理论熵值暗示的水平a 换成 @、o 换成 0 这类常见的"看起来复杂"的替换规则,早就被主流密码破解字典收录,几乎不增加实际的破解难度总的来说,衡量一个密码是否足够安全,理论熵值只是基础门槛,还需要避开这些"熵值虚高但实际脆弱"的模式,两者结合才是真正意义上的强密码。
在线工具:随机密码生成