piapia123
zh

密码强度检测

编码

所有处理都在浏览器本地完成,数据不上传服务器

输入
把文件拖到这里可直接载入
输出

⚠️ 请不要输入你正在使用的密码。 这里确实全在本机计算、不发任何请求(这个站没有服务端),但页面是从网上加载来的 —— 你无法确认它有没有被改过。拿一个结构相似的来测就行:同样的长度、同样的构词习惯,结论一样,而你原来那个密码从没离开过你的脑子。 为什么不能只看熵。 熵的公式只看长度与字符集,于是 `Password1!` 和 `x7#kQ2$m` 都是 9 位、都用了四类字符,算出同样的比特数 —— 而前者在字典的第一页上。所以这里加了两层:常见口令表(命中就直接判弱,`password` 只有 37 bit,但没人需要爆破它)与模式扣分(键盘游走、连续序列、日期、重复、leet 替换)。 破解时间是「场景 × 假设」。 同一个密码在不同场景下能差十亿倍:在线接口限速 10 次/秒时,40 bit 要几万年;而拿到数据库哈希、用多卡 GPU 跑 MD5 时,同样的密码几分钟就出来。所以这里逐场景给数字,并把速率写在旁边 —— 只给一个「需要 3 年」等于没说清在什么前提下。

功能

  • ⚠️ 页面第一行就是「不要输入正在使用的密码」的提醒 —— 这是这个工具唯一可能造成实际伤害的地方
  • 熵分两个数给:按长度与字符集算的原始熵,以及扣掉模式惩罚之后的有效熵
  • 常见口令表检测,认得出大小写变形、`p@ssw0rd` 这种 leet 替换,以及 `pass-word` 这种插了符号的写法
  • 模式识别:键盘游走(qwerty)、连续序列(abcd / 4321)、年份与日期、重复片段(aaa / ababab)、leet 替换
  • 五个破解场景逐个给时间:在线限速 / 在线不限速 / 离线慢哈希(bcrypt 等)/ 离线快哈希单卡 / 多卡集群,每个都标出假设速率
  • 可以一次输入多个候选,按行分组比较
  • 命中的常见口令无论熵多少都判为「等于没有」

使用方法

  1. ⚠️ 先别急着粘真密码 —— 拿一个结构相似的来测
  2. 把候选密码粘进去,一行一个
  3. 看「有效熵」与「发现的模式」两处,再对照下面五个场景的破解时间

常见问题

这个页面安全吗?我可以输入真密码吗?
技术上可以,但不建议。 这个页面是纯静态的,输入只在你的浏览器里参与计算,不会发出任何网络请求 —— 你可以打开浏览器的网络面板确认这一点。但页面本身是从网上加载来的,你无法验证它有没有被中途改过。一个「密码强度检测」页面天然会让人输入真密码,而这正是它唯一的风险点。用结构相似的替代,结论一样。
为什么熵的公式不够用?
因为熵只看长度与字符集,看不出「这串字符有没有意义」。`Password1!` 是 9 位、四类字符,按公式约 59 bit,看着不错 —— 但它就是 `Password` 加个 `1!`,攻击者的字典第一页就有。反过来,`qwertyuiop` 有 10 位纯小写、约 47 bit,而它在键盘上就是一行。所以这里加了常见口令表与模式扣分两层:先扣掉人能猜到的那部分,剩下的才叫熵。
破解时间为什么差这么多?
因为「试一次」的成本在不同场景下差了十个数量级。在线接口通常限速(每秒十次),所以位数的增长非常划算;而攻击者一旦拿到数据库里的哈希,就可以离线用 GPU 每秒试上千亿次 —— 此时同样的密码几乎瞬间被破。这也解释了为什么哈希算法比密码长度更关键:bcrypt / scrypt / Argon2 的慢是设计出来的,它把「每秒千亿次」压回「每秒一万次」。
我的密码显示「很强」,就安全了吗?
不一定。这里的结论只针对离线穷举这一种攻击。真实世界里的风险还有:同一个密码在别的站点泄露过(本工具查不到那些泄露库)、被钓鱼、被键盘记录、或者在浏览器里被恶意扩展读走。密码管理器加两步验证比任何强度分数都管用。

相关工具