这个工具能做什么,不能做什么
输入密码后,页面会统计它的长度和用到的字符类型(小写字母、大写字母、数字、其他字符),据此计算熵值(比特),换算成暴力破解的耗时估计,并检查几类明显的模式:众所周知的常见密码、只做了字母换符号的变形、长串重复,以及 1234 这样的连续字符。 在确定新密码之前,可以用它先看看大致的"分量";也可以判断公司或学校的密码规则是否真有意义。但它只是经验性的估计:仅看长度和字符类型的公式无法知道密码是不是随机生成的,也不知道它是否已经出现在泄露名单里。所以得分高并不等于安全。
熵值是怎么算的
假设攻击者一无所知,只能逐个尝试所有组合,候选数量就是 N^L,其中N为字符集大小,L为长度。熵值是它以2为底的对数,H = L × log2(N) 比特。 本工具按如下方式确定N:出现小写字母加26,出现大写字母加26,出现数字加10,只要有任何其他字符(标点、汉字、表情符号等)就加32。页面显示的时间是 2^H ÷ 10^10 秒,即把所有组合试完所需的时间;平均而言,大约试到一半时就会命中。
每增加1比特,候选数量翻一倍,所以多加一个字符的效果与字符集大小成正比:仅小写字母时每个字符约 4.70 比特,用满94个可打印ASCII字符时约 6.55 比特。
字符集 × 长度参考表(构建时计算)
| 长度 | 仅数字 (10) | 仅小写字母 (26) | 小写字母+数字 (36) | 大小写字母+数字 (62) | 字母+数字+符号 (94) |
|---|---|---|---|---|---|
| 8位 | 26.6 比特 不到1秒 | 37.6 比特 21秒 | 41.4 比特 5分钟 | 47.6 比特 6小时 | 52.4 比特 7天 |
| 10位 | 33.2 比特 1秒 | 47.0 比特 4小时 | 51.7 比特 4天 | 59.5 比特 3年 | 65.5 比特 171年 |
| 12位 | 39.9 比特 2分钟 | 56.4 比特 110天 | 62.0 比特 15年 | 71.5 比特 10,230年 | 78.7 比特 1.5e+6年 |
| 16位 | 53.2 比特 12天 | 75.2 比特 138,282年 | 82.7 比特 2.5e+7年 | 95.3 比特 1.5e+11年 | 104.9 比特 1.2e+14年 |
| 20位 | 66.4 比特 317年 | 94.0 比特 6.3e+10年 | 103.4 比特 4.2e+13年 | 119.1 比特 2.2e+18年 | 131.1 比特 9.2e+21年 |
可以看到:12位纯数字(约39.9比特)与8位纯小写字母(约37.6比特)相近;而16位纯小写字母(约75.2比特)远高于混用各类字符的8位(约52.4比特)。表中的时间都只对"随机选取字符"的密码成立。
示例输入与结果解读
下面各行都是用本工具的公式算出的数值(并用Node运行同一公式复核过)。这些示例是特意选的知名弱密码,请勿真正使用。
| 示例输入 | 长度 | 字符集 | 熵值 | 估算耗时 |
|---|---|---|---|---|
| 12345678 | 8 | 10 | 26.6 比特 | 不到1秒 |
| password | 8 | 26 | 37.6 比特 | 21秒 |
| P@ssw0rd! | 9 | 94 | 59.0 比特 | 2年 |
| Tr0ub4dor&3 | 11 | 94 | 72.1 比特 | 16,055年 |
| aaaaaaaaaaaaaaaa | 16 | 26 | 75.2 比特 | 138,282年 |
| correcthorsebatterystaple | 25 | 26 | 117.5 比特 | 7.5e+17年 |
| 我的密码 | 4 | 32 | 20.0 比特 | 不到1秒 |
- 12345678 是8位数字,26.6比特,一秒钟都用不到。实际上它排在各种泄露密码榜的最前面,根本不用算就已经不合格。
- P@ssw0rd! 理论上约59.0比特,落在"较弱"区间;但它是把
password的字母换成符号的典型写法,字典攻击会比数字显示的快得多。本工具会对这类替换给出提醒。 - aaaaaaaaaaaaaaaa(16个a)按公式是75.2比特,但只是同一个字母的重复,实际信息量几乎为零。这是"随机选取"的前提一旦被打破,熵值公式就失去意义的典型例子。
- correcthorsebatterystaple 有25个小写字母,得分117.5比特。但这只有在4个单词确实是随机抽取时才成立,而这句话太有名,早已被收进攻击字典。密码短语只有像密码短语生成器那样随机生成单词,才真正有效。
- 我的密码(4个汉字)被当作"其他字符"32种,得到20.0比特。汉字实际数量远多于此,所以计算偏保守;但如果攻击者使用中文词语字典,它反而很弱。
强度等级的划分
本工具的划分是:低于40比特为"很弱",40到60为"较弱",60到80为"一般",80到100为"较强",100以上为"很强"。这些界线并非行业标准,而是本站定的参考刻度。一旦检测到常见密码、重复或连续字符,无论计算值多高都会下调等级:众所周知的弱密码显示为"很弱",其他提醒则最高只显示到"较弱"。
最新指南怎么说
美国NIST的数字身份指南(SP 800-63B)在2025年的第4版中仍然强调长度和禁用名单。根据 pages.nist.gov/800-63-4 中3.1.1.2节"Password Verifiers"的内容:当密码是唯一的认证因素时,验证方要求至少15个字符;仅作为多因素认证的一部分时至少8个字符;建议允许至少64个字符的长度;不得强制混合字符类型之类的组合规则;必须把候选密码与常用或已泄露的密码名单比对;在没有泄露证据时,不得要求定期更换。Unicode字符按码点计数。具体条款和适用范围请以原文为准,你所在机构的规定可能更严格。
常见错误与误解
- 加个符号就安全:在末尾加"!"或"1",是破解工具最先尝试的变形。
- 多个网站共用一个密码:一个网站泄露后,攻击者会拿同一组合去试别的服务(撞库)。共用的密码熵值再高也没用。
- 生日、手机号、姓名、键盘顺序:qwerty、1q2w3e4r、asdf1234 之类的键盘顺序也在字典里。
- 要破解几百年,所以放心:这取决于服务端如何保存哈希,以及攻击者每秒能试多少次。每秒100亿次只是针对快速哈希做离线攻击的一种假设。
本工具的局限
- 不会与泄露密码数据库比对。只检查一份很短的内置常见密码列表,所以"没有提醒"不等于"安全"。
- 长度按码点计数,一个表情符号算一个字符。不同服务计数方式不同(UTF-16单元、字节),同一字符串在不同网站上可能被接受,也可能被拒绝。
- 所有非ASCII字符和符号被合并为32种,这是一种简化。
- 没有反映多因素认证、登录尝试次数限制,也没有考虑真实服务使用的慢哈希(bcrypt、Argon2等)带来的防护。
安全与隐私说明
页面的计算在你每次输入时由浏览器中的脚本完成。脚本里没有通过 fetch 或表单提交发送输入值的代码,也不会保存。输入框默认是遮蔽的,勾选"显示输入内容"后才可见。浏览器扩展、公用电脑上的键盘记录器和旁人偷看,是本工具无法防范的。在会加载广告等第三方脚本的普通网页上,最稳妥的习惯是:不要粘贴真实在用的密码,改用长度和字符组成相似的字符串来测试。
如何使用结果
如果熵值达到80比特以上、没有常见模式的提醒,而且没有在其他服务上使用过,那么对普通账号来说已经足够。对于邮箱、金融以及密码管理器主密码这类重要账号,请使用16位以上的随机字符串,或由几个随机单词组成的密码短语,并开启多因素认证。难以记住的密码交给密码管理器是最现实的做法。需要随机候选时,请使用密码生成器。
相关工具
常见问题
我输入的密码会被保存吗?
不会。计算只在浏览器内进行,页面里没有发送或保存输入内容的代码。关闭或刷新页面后,输入框内容即被清除。
真实的攻击和这个计算完全一样吗?
不一样。实际攻击会先尝试泄露名单、字典和基于规则的变形,所以本工具的结果只是纯暴力破解的理论值。容易被预料的密码会比数字显示的快得多被攻破。
一定要包含符号吗?
NIST指南不建议强制组合规则,更看重长度和泄露名单检查。如果网站要求,就照做,但最好先加长。只是勉强满足要求的短密码,反而容易被预料。
用中文做密码安全吗?
汉字的种类很多,理论上的组合数很大,但人们挑选的往往是常用词语,这些都在字典覆盖范围内。另外,一些服务对非ASCII输入支持不佳,或在不同设备上的编码处理不同。本工具对这类字符保守地按32种处理。
多少比特才够?
没有固定答案。有登录次数限制的在线场景,较低的数值也能撑住;而针对泄露哈希的离线攻击需要高得多的数值。按本站的刻度,80比特以上显示为"较强",100比特以上显示为"很强"。
需要定期更换密码吗?
NIST建议在没有泄露迹象时不要强制定期更换。如果怀疑泄露,或此前曾重复使用,请立即更换;所在机构另有规定的,也请遵守。