跳到主要内容
安全2026-05-155 分钟阅读

密码强度检测器:如何评估并改进口令

为什么需要关注密码强度

密码仍是多数账户的第一道关。生日、手机号、常见词作口令仍然很普遍。Verizon 等数据泄露报告里,弱口令或被盗凭证长期占入侵路径的大头。

密码强度检测器 在浏览器本地评估口令:长度与字符集、常见弱模式、有效熵与离线破解时间量级,并给出可执行的改进建议。理解评分维度,比盯着一个「分数颜色」更有用。

弱密码的风险

  • 暴力破解:短或纯数字口令,离线哈希可被很快穷尽
  • 字典攻击:常见词、键盘行走、leet 变体都在攻击字典里
  • 撞库:一站泄露,复用同一口令的其他站一并失守
  • 可猜测个人信息:生日、姓名拼音、手机号尾号

核心评估维度(与本站工具对齐)

1. 长度

长度对搜索空间是指数项。每多一位,在相同字符集下空间乘以字符集大小。

密码长度纯数字小写字母大小写+数字大小写+数字+符号
6 位瞬间几秒几分钟几小时
8 位几秒几小时几天几周
12 位几年数千年数百万年极长
16 位——天文量级天文量级

结论:长度通常比「多塞几个特殊符号」更划算。可用 密码生成器 生成长随机串或 passphrase,再用强度检测复核。

2. 字符集多样性

四类字符:大写、小写、数字、符号。多开一类会增大字符集,从而提高原始熵。不必为记不住而生僻符号——随机长口令或单词短语更稳。

3. 弱模式检测(工具会扣分)

即使「看起来很长」,下列模式仍会显著压缩有效搜索空间:

模式例子工具行为
常见密码表password、qwerty有效熵压到很低,分数封顶偏弱
Leet 变体P@ssw0rd、Adm1n归一化后命中常见词根则惩罚
连续字符abcdef、987序列惩罚
重复字符aaa、1111重复惩罚
键盘行走qwerty、asdfgh、1qaz2wsx行走惩罚
年份后缀MySecret2024后缀年份惩罚

字典与规则攻击不按「全字符集暴力」计价;工具用有效熵(原始熵减去模式惩罚,并设上限)来反映这一点。

4. 熵与破解时间边界

原始熵近似:长度 × log₂(字符集大小)。本站再做三件事:

  1. 模式惩罚:命中上表则扣 bit,常见词直接压到极低有效熵
  2. 封顶:有效熵封顶 128 bit——再高的数字对「离线穷举」已无额外叙事价值
  3. 对数空间估时:用有效熵估算平均破解时间(半空间 / 每秒 100 亿次),避免 charset^length 溢出成 Infinity/NaN

参考区间(有效熵):

  • < 28 bit:很快可被离线猜完量级
  • 28–35 bit:中等
  • 36–59 bit:较强
  • ≥ 60 bit:暴力穷举通常不现实(仍要防复用与钓鱼)

使用场景

注册重要账户前

在银行、邮箱、云控制台设口令时,粘贴到本地检测器看清单与建议。站点自带强度条标准不一;独立、纯前端工具便于交叉核对。

审计旧口令

多年前的「单词 + 年份」今天仍常见。把候选放进 强度检测,若出现 leet / 年份 / 键盘行走,优先用生成器换掉。

团队策略

策略可写清:最低长度(如 ≥12)、是否禁止常见表与年份后缀、鼓励 passphrase、落库用 bcrypt(或 Argon2id)而不是可逆加密。强度检测管「人选得怎样」,bcrypt 管「存得怎样」。

实用建议

1. 优先加长,再谈符号花样

# 弱:短且可预测
P@ssw0rd!2024

# 更稳:长且无关单词(或随机串)
correct-horse-battery-staple

生成可用 密码生成器(随机 / passphrase),再用强度检测看有效熵是否掉到惩罚区。

2. 一站一口令

复用是撞库的燃料。密码管理器负责记忆与填充;你只守住主口令 + 2FA。

3. 少用个人信息与年份后缀

生日、手机号、Name2024 都在规则字典里。工具对年份后缀会单独提示。

4. 叠加第二因子

口令再强也挡不住钓鱼页。重要账户开 TOTP 或硬件密钥;见站内 TOTP 工具。

5. 落库用慢哈希

客户端强度检测不能代替服务端 bcrypt/Argon2。生成 → 检测 → bcrypt 哈希 是一条完整本地演练链。

站内密码簇怎么串

步骤工具 / 指南
生成随机口令 / passphrase密码生成器 · 生成器指南
估有效熵 / 拒弱模式强度检测 · 本文
落库 / 校验Bcrypt 工具 · Bcrypt 指南

实现注记

评分与模式检测集中在共享函数 checkPasswordStrength:长度/字符类加分,常见表、leet、序列、重复、键盘行走、年份后缀扣分并压有效熵;有效熵封顶 128 bit;破解时间用 2^(entropy-1) / 1e10 的对数形式计算,避免 Math.pow(charset, length) 溢出。UI 清单与建议文案映射同一结果,不在组件里另写一套规则。常见表是内置百级样本,不是完整 Have I Been Pwned 语料——未命中≠未泄露。估算按离线 GPU 级猜测率,在线限速登录会慢得多;分数是启发式,不是密码学证明。

FAQ

为什么 P@ssw0rd 分数很低?

Leet 替换(@→a、0→o 等)归一化后仍是常见词根,攻击字典同样收录。换无关长串或 passphrase,不要只改符号。

有效熵和「原始熵」差在哪?

原始熵按字符集假设均匀随机;一旦出现键盘行走或常见词,真实猜测空间远小于 charset^length。工具显示的是扣惩罚、并可能封顶后的有效熵。

强度检测能代替密码管理器或 bcrypt 吗?

不能。检测只回答「这个字符串好不好猜」;管理器解决复用与记忆;bcrypt/Argon2 解决存储侧暴力成本。三条链要分开看。

为什么很长的随机口令熵显示封顶?

超过约 128 bit 后,离线穷举已不是主要威胁模型,继续显示 200+ bit 容易误导。封顶后应关注:是否唯一、是否进管理器、服务端是否慢哈希。


来自 ToolVault 工具匣 的开发手记。更多免费本地工具见 首页。