密码强度检测
编码所有处理都在浏览器本地完成,数据不上传服务器
⚠️ 请不要输入你正在使用的密码。 这里确实全在本机计算、不发任何请求(这个站没有服务端),但页面是从网上加载来的 —— 你无法确认它有没有被改过。拿一个结构相似的来测就行:同样的长度、同样的构词习惯,结论一样,而你原来那个密码从没离开过你的脑子。 为什么不能只看熵。 熵的公式只看长度与字符集,于是 `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 等)/ 离线快哈希单卡 / 多卡集群,每个都标出假设速率
- 可以一次输入多个候选,按行分组比较
- 命中的常见口令无论熵多少都判为「等于没有」
使用方法
- ⚠️ 先别急着粘真密码 —— 拿一个结构相似的来测
- 把候选密码粘进去,一行一个
- 看「有效熵」与「发现的模式」两处,再对照下面五个场景的破解时间
常见问题
- 这个页面安全吗?我可以输入真密码吗?
- 技术上可以,但不建议。 这个页面是纯静态的,输入只在你的浏览器里参与计算,不会发出任何网络请求 —— 你可以打开浏览器的网络面板确认这一点。但页面本身是从网上加载来的,你无法验证它有没有被中途改过。一个「密码强度检测」页面天然会让人输入真密码,而这正是它唯一的风险点。用结构相似的替代,结论一样。
- 为什么熵的公式不够用?
- 因为熵只看长度与字符集,看不出「这串字符有没有意义」。`Password1!` 是 9 位、四类字符,按公式约 59 bit,看着不错 —— 但它就是 `Password` 加个 `1!`,攻击者的字典第一页就有。反过来,`qwertyuiop` 有 10 位纯小写、约 47 bit,而它在键盘上就是一行。所以这里加了常见口令表与模式扣分两层:先扣掉人能猜到的那部分,剩下的才叫熵。
- 破解时间为什么差这么多?
- 因为「试一次」的成本在不同场景下差了十个数量级。在线接口通常限速(每秒十次),所以位数的增长非常划算;而攻击者一旦拿到数据库里的哈希,就可以离线用 GPU 每秒试上千亿次 —— 此时同样的密码几乎瞬间被破。这也解释了为什么哈希算法比密码长度更关键:bcrypt / scrypt / Argon2 的慢是设计出来的,它把「每秒千亿次」压回「每秒一万次」。
- 我的密码显示「很强」,就安全了吗?
- 不一定。这里的结论只针对离线穷举这一种攻击。真实世界里的风险还有:同一个密码在别的站点泄露过(本工具查不到那些泄露库)、被钓鱼、被键盘记录、或者在浏览器里被恶意扩展读走。密码管理器加两步验证比任何强度分数都管用。
相关工具
Base64 编解码
编码把文本转成 Base64,或把 Base64 还原成文本,中文与 emoji 都按 UTF-8 正确处理。全部在浏览器本地完成,内容不上传。
URL 编解码
编码把中文、空格与符号转义成 %XX,或把 %XX 还原成文本;整条 URL 与单独的参数值要选对方式,选错不会报错,但链接会打不开。全部在浏览器本地完成。
HTML 实体编解码
编码把 < > & 与引号转成 HTML 实体,也能把实体还原成字符,而且只解一遍:&lt; 得到的是 < 而不是尖括号。全部在浏览器本地完成。
JWT 解析与验签
编码把 JWT 拆成 header、payload、signature,支持用密钥验证 HS256/384/512 签名,并把 exp、nbf 换算成可读时间。全部在浏览器本地完成。
Unicode 转义
编码把中文、emoji 这类非 ASCII 字符转成 \uXXXX、\xXX 或 &#xXXXX; 的转义写法,也能还原回来。全部在浏览器本地完成,不上传。
文件转 Base64
编码拖入任意文件即可得到 Base64 与可直接粘进 src / url() 的 data URL,并列出 MIME、体积与编码后的长度。文件不上传。