实用工具
输入
结果
结果会显示在这里。「至少 8 位,含数字和符号」这种规则会把 P@ssw0rd1 判为强密码,可它恰恰是所有破解工具最先尝试的那一批。zxcvbn 最初由 Dropbox 开发(dropbox/zxcvbn,16k star),它像攻击者一样思考:在密码里找出字典词、人名、键盘连按、日期、重复片段和字母替换(l33t),再算出这种结构实际还剩多少次猜测。本页运行的是仍在维护的 TypeScript 移植版 zxcvbn-ts(zxcvbn-ts/zxcvbn,MIT),加载了常见密码和英文词典。你输入的内容不会离开页面:没有任何网络请求,也不做泄露库查询。
它是怎么工作的
- 把密码拆成最容易猜的一串模式,每一段的猜测次数相乘得到总数,以 10 的幂次显示。
- 0–4 分由总猜测次数决定:少于 10^3 为 0 分,少于 10^6 为 1 分,少于 10^8 为 2 分,少于 10^10 为 3 分,更多则为 4 分。
- 破解时间分别假设:每小时 100 次(有限流的登录框)、每秒 10 次(无限流)、每秒 1 万次(被拖库且用 bcrypt/scrypt 存储)、每秒 100 亿次(被拖库且用无盐快速哈希,GPU 破解)。
- 在「上下文」里填入你的名字、用户名或网站名,zxcvbn 会把它们当作攻击者针对这个账号最先尝试的词。
你的数据去了哪里
哪也没去。本工具完全在你的浏览器里运行:你粘贴的文本由页面处理,不会传输到任何服务器,也不会写进任何日志。
本工具会接触密钥和凭证,因此任何一次运行都不会被保存,连你自己的历史里也不会有。
它要花多少
本工具完全免费,不需要登录,也不消耗积分。
常见问题
- 该看哪一个破解时间?
- 看与密码存储方式对应的那个。在管理规范的网站上,「离线、慢哈希」是被拖库后最现实的情形。「离线、快哈希」适用于存储不当的密码(无盐 MD5、SHA-1),以及可以直接离线攻击的东西,比如加密压缩包或 Wi-Fi 握手包。
- 看起来很乱的长密码为什么分数很低?
- 因为在 zxcvbn 眼里它并不随机。1qaz2wsx 这样的键盘走位、倒写的单词、年份、重复片段、用 @ 代替 a 这类替换,它都有建模,每一种只需攻击者付出很少的猜测次数。输出里的「matched patterns」会列出具体是哪一段被识别了。
- 会检查密码是否已经泄露吗?
- 不会,这是有意为之。泄露检查需要向 Have I Been Pwned 之类的服务查询哈希前缀,那就是一次网络请求,而本页不发任何请求。不过 zxcvbn 内置的常见密码表能离线识别出泄露最多的那些密码。
- 对中文拼音密码准确吗?
- 准确度会下降。这里加载的是常见密码表和英文单词、人名词典,不在其中的拼音音节和中文短语会被当作随机字母计算,估计值可能偏乐观。像 woaini、zhangwei 加生日这类组合即使拿到不错的分数,也请保持怀疑。
- 「guesses 10^x」是什么意思?
- 按常见模式攻击时,预计需要的尝试次数,以 10 的幂次表示。对于人为设定的密码,它比「熵有多少比特」更有参考价值,因为它反映的是真实破解工具的猜测顺序,而不是字符集大小。
背后的开源项目
本工具运行在 zxcvbn-ts/zxcvbn 之上,以 MIT 许可发布。如果你需要在自己的程序里实现同样的能力,直接用这个库。
zxcvbn-ts/zxcvbn也常被称作
- 密码强度检测
- 密码强度测试
- 密码安全检测
- zxcvbn
- 密码破解时间
- 弱密码检测