
什么让密码“强”?
密码强度通过熵来衡量——即密码中不可预测性的量。熵越高,破解所需时间越长。熵取决于两个因素:使用的字符集大小(大写字母、小写字母、数字、符号)和密码长度。
公式:熵 = L × log₂(N)
其中 L = 密码长度,N = 可能字符数。
| 字符集 | 池大小 | 12字符熵 |
|---|---|---|
| 仅数字 | 10 | 39.9 比特 |
| 仅小写字母 | 26 | 56.4 比特 |
| 字母+数字 | 62 | 71.5 比特 |
| 完整ASCII可打印字符 | 95 | 78.9 比特 |
一个使用完整ASCII集的12字符密码具有约79比特的熵——在哈希处理得当的情况下,足以满足大多数用途。

现实世界中的破解时间
破解时间取决于存储密码所用的哈希算法以及攻击者的硬件。使用bcrypt(成本12)在单个GPU上:
| 密码 | 熵 | 破解时间 |
|---|---|---|
password |
非常低 | 瞬间(字典) |
P@ssw0rd |
~28 比特 | 秒 |
abc12345 |
~38 比特 | 分钟 |
mK7#vQ2p |
~52 比特 | 年 |
Correct-Horse-Battery |
~51 比特 | 世纪 |
X7#kLm$9pQr@2vN |
~97 比特 | 数十亿年 |
这些数字假设离线破解(攻击者拥有哈希数据库)。在线攻击(通过登录表单猜测)受速率限制——如果服务实现了账户锁定,即使是弱密码也能抵御在线攻击。
常见攻击方法
字典攻击
攻击者从庞大的单词列表(RockYou、Have I Been Pwned)及其常见变体中尝试已知密码:password123、P@ssword、passw0rd。这些覆盖了大多数现实世界中的弱密码。
暴力破解
尝试所有可能的组合。仅对短密码实用——8个字符或更少,且字符集有限。
凭证填充
使用从其他泄露中获得的用户名/密码对。如果你在多个站点重复使用密码,任何一个站点的泄露都会危及你所有账户。

彩虹表
针对常见密码的预计算哈希表。通过加盐(现代哈希库总是加盐)来防御。
密码喷洒
在许多账户上尝试一小部分常见密码,以避免触发锁定阈值。
此工具测量什么
此密码强度分析器评估:
- 熵计算 — 基于字符池×长度。
- 模式检测 — 键盘行走(
qwerty、12345)、日期(19901231)、重复字符(aaabbb)。 - 字典检查 — 针对常见密码模式和替换进行测试。
- 估计破解时间 — 针对不同攻击场景(在线限速、离线快速哈希、离线bcrypt)。
- 合规性反馈 — 密码是否满足常见要求(8+字符、大写字母、数字、符号)。
强密码的最佳实践
使用密码管理器
像Bitwarden(开源)、1Password或KeePass这样的应用程序生成并存储真正随机的密码——你无需记住它们。这使你能够为每个账户使用唯一、长且随机的密码。

密码短语被低估了
四个随机单词("correct horse battery staple")可能比"X7#kLm$9"更容易记住,同时提供更多熵。关键是随机——"sunshine puppy rainbow"不算。
启用双因素认证
即使密码较弱,启用2FA也会安全得多。即使攻击者以某种方式获得了你的密码,没有第二个因素也无法登录。
绝不重复使用密码
密码重复使用是泄露级联的头号原因。为每个账户使用唯一密码——密码管理器让这变得轻而易举。
检查你的密码是否已被泄露
Have I Been Pwned 服务维护了一个包含数十亿泄露凭证的数据库。如果你的密码出现在泄露中,请立即更改。
企业密码策略:NIST指南
美国国家标准与技术研究院(NIST SP 800-63B)在2017年更新了其密码指南,提出了基于证据的建议:
- 最少8个字符(更倾向于更长)
- 无强制复杂性规则(它们不会提高安全性,反而让用户沮丧)
- 无强制定期轮换(除非有证据表明被入侵)
- 对照泄露数据库检查密码
- 允许粘贴密码(这有助于用户使用密码管理器)
许多组织仍然执行过时的策略(每90天过期、必须包含符号、不能重复最近12个),而NIST现在不鼓励这些做法。
→ 试试 密码强度分析器