破解一个密码到底要多久

答案几乎完全取决于两件事:密码是怎么存的,以及它有多长。

密码 发布于 2026年10月20日 阅读约 2 分钟

两种攻击速度,相差十个数量级

在线攻击是针对真实登录入口的猜测。限流和锁定最多把它压到每秒几次,所以一个有 40 比特熵的密码用这种方式实际上无法破解。离线攻击是在自己控制的机器上针对窃取到的哈希做猜测,现代多 GPU 机器对快速哈希可以达到每秒 10^11 次猜测。

几乎所有「密码几秒被破解」的标题描述的都是第二种情况。这很重要,因为同一个密码在一个站点上可能安全,在另一个站点上却是灾难,原因完全在于站点如何存储它。

按长度看破解时间

下表的计算假设使用完整的可打印字符集(88 个字符,每个字符约 6.46 比特)、每秒 10^11 次猜测,并且攻击者平均在搜索完一半空间之后才找到密码。

长度熵离线破解时间
852 比特约 6 小时
1065 比特约 2 个月
1278 比特约 4 万年
1490 比特约 3 亿年
16103 比特超出有意义的量级
20129 比特超出有意义的量级

为什么长度胜过长复杂度

每增加一个字符,搜索空间就乘以 88 倍。给一个只含小写的密码增加一类符号,只是把搜索空间乘以约 1.35 倍。整个论证就浓缩在这一点上:长度是唯一带有大指数的杠杆。

这也是为什么强制复杂度规则——一个大写、一个数字、一个符号——产生的密码比长度要求更弱。它们把人推向「Password1!」这类可预测的模式,却几乎没有增加熵。

密码实际上是怎么被破解的

暴力破解在实践中反而是最不常见的方法。把别的泄露事件里的凭据拿来撞库、钓鱼,以及基于个人信息的猜测,造成的账号失陷要多得多。一个 103 比特的密码在五个站点上重复使用,实践中比一个只用一次、只有 60 比特的密码更弱。

所以防御的排序是:唯一密码第一,密码管理器第二,长度第三,复杂度最后。

常见问题

12 个字符够长吗?

对在线攻击来说足够宽裕。对针对快速哈希的离线攻击来说,78 比特已经处在认真配置的硬件所能触及的边缘。16 个字符是更好的默认值。

带符号的密码破解起来更慢吗?

略慢。字符集从 62 增加到 88,每个字符的熵提高约 8%。多四个字符的作用要大得多。

为什么有些资料说 8 个字符几秒就破?

因为它们假设的是 MD5 或 SHA-1 这类快速哈希,以及单块 GPU。对构建糟糕的站点来说这是现实模型,对 bcrypt 或 Argon2 来说则不现实。

配合这篇指南使用的工具

更多指南