密码强度检测器
通过熵分析、破解时间估计和可操作的改进建议来评估密码安全性。
强度分析
熵
--
比特
预计破解时间
--
以每秒10亿次猜测计算
改进建议
- 输入password查看反馈
密码强度本质上是在说:攻击者暴力穷举出这个密码需要多少次尝试。这个工具把它换算成一个直白的 0-100 分数、一个强度标签、一个预计破解时间,以及针对你实际输入的这个密码的改进建议。评估在你打字时就在浏览器里完成,密码不会被提交到任何地方。
使用方法
- 在输入框中输入或粘贴一个密码。
- 读取分数、从”非常弱”到”非常强”的等级,以及破解时间估算——它们会随每次按键实时更新。
- 查看反馈行,它会指出是长度不够还是缺少某类字符,而不是给一个含糊的结论。
- 修改密码并重复,直到它与你要保护的账号的安全要求相符。
没有生成或提交按钮。清空输入框会把一切重置为零,并显示空密码提示。
评分背后的熵公式
工具会判断密码使用了四类字符中的哪几类,把它们的字符池大小相加,然后计算:
entropy = length × log2(pool size)
熵以比特为单位,每多一比特,猜测空间就翻一倍。分数再把比特映射到 0-100:round(entropy / 128 × 100),上限为 100。等级使用的是原始比特数:
| 等级 | 熵(比特) |
|---|---|
| 非常弱 | 28 及以下 |
| 弱 | 29 到 35 |
| 一般 | 36 到 59 |
| 强 | 60 到 127 |
| 非常强 | 127 以上 |
因为等级基于原始比特,而分数是重新缩放后的百分比,所以一个密码可能显示为”强”,分数却只有四十多。破解时间是 2^entropy / 1,000,000,000 秒,假设的是针对快速哈希的离线攻击。
实操示例
| 密码 | 长度 | 字符池 | 熵 | 分数 | 等级 | 破解时间 |
|---|---|---|---|---|---|---|
| password | 8 | 26 | 37.60 | 29 | 一般 | 约 3 分钟 |
| P@ssw0rd! | 9 | 95 | 59.13 | 46 | 强 | 约 19 年 |
| Tr0ub4dor&3 | 11 | 95 | 72.27 | 56 | 强 | 约 1,803 个世纪 |
| correcthorsebatt | 16 | 26 | 75.21 | 59 | 强 | 约 13,828 个世纪 |
| X7#kQ9$mZ2&vL4nR | 16 | 95 | 105.12 | 82 | 强 | 约 13,956,325,109,454 个世纪 |
| A1b2C3d4E5f6G7h8I9j0K1 | 20 | 95 | 130.99 | 100 | 非常强 | 约 858,638,904,047,015,600,000 个世纪 |
最后一行说明了真正达到”非常强”需要什么:大约 131 比特。对于随机混合字符的密码,这意味着大约 20 个字符。16 个真正随机的字符落在 105 比特,仍然只显示为”强”。
为什么长度胜过复杂度
表中两个中间的例子很能说明问题。correcthorsebatt 是 16 个小写字母,没有任何符号或数字,却比 11 位混合大小写的 Tr0ub4dor&3 高出约 3 比特。每增加一个小写字符增加 log2(26) ≈ 4.7 比特,每增加一个混合字符增加 log2(95) ≈ 6.57 比特。扩大字符池的单字符收益更高,但加字符是大多数人都能持续做到的事,而且一个更长的口令短语通常比一串短而靠替换拼凑的字符更容易记住。
把反馈变成更强的密码
当反馈说密码太短时,最快的修法是增加字符,而不是加符号。对比 Sunset7!——8 个字符、约 52 比特——和 sunsetrivercabin——16 个小写字符、约 75 比特。后者更好记,而且暴力破解难度约高出千万倍。如果你希望强度计奖励好记的东西,可以挑四五个互不相关的词,用一个只有你知道的字符连接起来。如果追求最大强度,就让密码管理器生成 16 到 20 个覆盖四类字符的随机字符;20 位随机字符串会越过 127 比特的线,进入”非常强”。两条路最终都指向同一个最重要的习惯:每个账号使用独立密码,这样一个数据库泄露后无法被拿去撞另一个服务。
破解时间数字到底意味着什么
这个估算假设攻击者已经拿到你密码的快速哈希,并且每秒能测试十亿个候选。对于未加盐的 MD5 或 SHA-1 泄露库配高端 GPU,这是一个合理的模型。对于会限制尝试频率、管理良好的登录页面,它偏悲观;对于 bcrypt、scrypt 或 Argon2 哈希,它又过分乐观,因为这些算法会把每一次猜测都拖慢几个数量级。请把这个数字当作比较性的信号,而不是承诺。
速率也会随硬件波动。单块高端 GPU 面对刻意放慢的哈希时可能达不到每秒十亿次,而一台由多块 GPU 组成、专门用于破解的机器对抗未加盐 MD5 时又能远超这个数值。在线服务还多一层防护:限流、账号锁定和验证码让重复猜测变得不现实,这也是同一个密码可能在银行登录场景下安全、在离线泄露库中却脆弱的原因。强度计只报告一个统一的攻击者模型,好让不同密码之间的数字保持可比。
这个工具抓不到什么
熵衡量的是搜索空间的大小,而不是攻击者是否真的会去搜索它。有几种常见弱点对公式来说是不可见的:
- 字典词和人名,包括把
@当作a、把0当作o这类众所周知的替换。 - 键盘路径,例如
qwerty、asdfgh或1qaz2wsx。 - 从已泄露网站复用的密码;撞库根本不需要破解。
- 生日、电话号码以及其他攻击者能查到的个人信息。
- 重复或有规律的内容,比如
abcabcabcabc,数学上却把它当作高熵。
务实的结论是:把这个强度计和密码管理器配合使用,由管理器为每个网站生成独立的随机密码,并在支持的地方开启两步验证。
相关工具
常见问题
0-100 的评分到底是怎么算出来的?
工具先检测密码出现了哪几类字符,把各自的字符池大小相加(小写 26、大写 26、数字 10、符号 33),再按长度乘以池大小的 log2 计算熵。分数等于熵除以 128 再乘 100,上限 100。熵超过 127 比特的密码一律显示 100 分。
为什么增加长度比添加符号更有效?
字符池只能让猜测空间按对数增长,而每多一个字符都会把猜测空间成倍放大。16 位纯小写密码约有 75 比特熵,而 11 位混合四类字符的密码只有约 72 比特。通常加长是更容易拿到收益的一步。
这个工具能识别字典词或已泄露的密码吗?
不能。它只是一个纯熵估算器,没有词库,也不查询泄露数据库。P@ssw0rd! 会被当作九个随机混合字符处理并得到 46 分,尽管字典攻击几乎会立刻试到它。
破解时间估算假设了多快的破解速度?
假设每秒十亿次猜测,大致相当于一台现代的 GPU 破解设备对抗快速哈希。估算值为 2 的熵次方除以该速率。像 bcrypt 或 Argon2 这样的慢哈希,以及有速率限制的在线登录,实际耗时会长得多。
为什么评分和强度等级有时会不一致?
等级使用固定的熵阈值,而分数把同一批比特重新映射到 0-100。P@ssw0rd! 达到 59.13 比特,刚好越过“强”的 59 比特边界,但 59.13/128 换算下来分数只有 46。
它假定多大的字符池?
小写 26、大写 26、数字 10、符号 33。只有实际出现的类别会被计入,所以纯小写密码的池是 26,四类齐全的密码池是 95。空格和非 ASCII 字符都归入符号类。
由 HandyTools Hub 团队审校 · 最后更新