← 返回博客

什么是密码熵?强度怎么算

2026-04-02 · 5 分钟阅读

熵的基本概念

熵(Entropy)源自信息论,由克劳德·香农在1948年提出,用于度量信息的不确定性或随机性。在密码学中,密码熵衡量的是攻击者在不知道任何先验信息的情况下,需要猜测多少次才能找到正确密码。熵值越高,密码越难被破解。

密码熵通常以"比特"为单位表示。一个 n 比特熵的密码,攻击者平均需要尝试 2^n / 2 次才能猜中。例如,40比特熵的密码平均需要约5500亿次猜测,而128比特熵的密码在现有计算能力下实际上不可能被暴力破解。

密码熵的计算公式

对于随机生成的密码,熵的计算公式非常简单:H = L × log₂(N),其中 H 是熵(比特),L 是密码长度(字符数),N 是字符集大小(可用的不同字符数量)。

举个例子:一个12位仅含小写字母(N=26)的密码,熵为 12 × log₂(26) ≈ 12 × 4.7 ≈ 56.5 比特。而同样长度的密码如果使用全部ASCII可打印字符(N=95),熵为 12 × log₂(95) ≈ 12 × 6.57 ≈ 78.8 比特。仅仅扩大字符集,安全强度就提升了22比特,相当于破解难度增加了约400万倍。

为什么长度比复杂性更重要

从公式可以看出,密码长度对熵的影响是线性的,而字符集大小的影响是对数的。这意味着增加密码长度比增加字符类型更有效率。一个20位的纯小写字母密码(熵≈94比特)比一个12位的完整ASCII密码(熵≈78.8比特)更难破解。

这就是为什么现代安全专家越来越推荐密码短语(passphrases)——由多个随机单词组成的长密码。"correct horse battery staple"这样的密码,长度和随机性带来的熵远超"P@ssw0rd"这样典型的"复杂"密码。

常见密码的熵值对比

以下是一些典型密码的熵值估算,帮助你直观理解差距:

现实中的破解速度与熵的关系

以当前高性能 GPU 的破解速度(MD5 哈希约每秒 600 亿次),不同熵值密码的预期破解时间如下:40比特约需1秒,56比特约需18小时,72比特约需47万年,88比特约需310亿年。可见,超过72比特的密码在现实中已经无法被暴力破解。

需要注意的是,这些数字适用于未加盐的快速哈希(如MD5)。现代密码存储使用 bcrypt、Argon2 等慢哈希算法,可以将破解速度降低到每秒数百次,使得即使较低熵值的密码也有更多保护。但这并不意味着你可以降低密码强度的要求。

人为创建密码的"有效熵"问题

公式计算的是理论熵,但人为创建的密码往往比理论值弱得多。如果攻击者知道密码遵循某种模式(比如"一个大写字母开头,后跟6个小写字母,再跟两个数字"),实际搜索空间会大幅缩小,有效熵远低于理论值。

这正是随机密码生成器的核心价值:它生成的密码的有效熵等于理论熵,因为没有任何人类偏好或模式被引入。使用生成器,你能确实获得公式所承诺的那个安全级别。

推荐的密码熵目标

NIST(美国国家标准与技术研究院)在其2017年数字身份指南(SP 800-63B)中不再强制要求特殊字符和定期更换密码,而是建议允许更长的密码(至少64位最大长度)并使用密码管理器。一般安全建议是:普通账号至少72比特,高价值账号至少100比特。

使用全ASCII字符集时,16位随机密码提供约105比特的熵,远超任何现实威胁。这也是为什么优质密码生成器默认推荐16位或更长——它在安全性和实用性之间提供了最佳平衡。

立即免费使用相关工具

免费使用 →