免费密码强度检查器
通过熵分析、破解时间估算和详细的要求检查列表评估您的密码强度。完全在浏览器中运行。
强度检查只在你的设备上运行。下方可选的泄露检查会把 SHA-1 哈希的前 5 个字符(绝不是密码本身)发送到 pwnedpasswords.com。
仅为启发式评估。 该分数是根据结构和常见密码列表得出的估算。对于已泄露的密码,下方的泄露检查更可靠。
常见用途
- 注册前检查密码强度在任何网站或应用上创建新帐户之前,测试密码是否足够强。
- 验证密码符合安全策略检查密码是否符合组织安全策略:长度、字符多样性、无常见密码。
- 教授密码安全概念使用熵和破解时间估计来教导学生和员工为什么某些密码较弱。
- 测试您的密码管理器主密码验证密码管理器主密码是否真正强大,它保护您所有其他密码。
- 安全审计密码强度审查评估密码强度作为安全审计检查清单的一部分。审查熵、破解时间和常见密码检测。
工作原理
强度分析完全在你的浏览器中使用手写的 JavaScript 引擎运行——没有库、没有服务器。它结合了字符池熵计算、模式检测(键盘连续按键、重复字符、常见替换),以及使用 Web Crypto API 和 k-匿名性的可选泄露查询,因此你的密码绝不会离开设备。
- 1计算字符池熵你输入时,工具会检测存在哪些字符类别——小写(26)、大写(26)、数字(10)、符号(32)——对字符池总大小取 log2 得到每个字符的熵位数,再乘以密码长度。一个 10 位全小写密码的起点约为 47 位。
- 2应用模式扣分然后针对可预测的结构降低原始熵:'qwe' 或 'asd' 这样的键盘连续按键、'abc' 或 '321' 这样的顺序字符、四位数年份(1900–2099)以及连续重复的字符,每项扣 10 位。工具还会还原常见的 l33t 替换(@ → a、0 → o、$ → s)并去掉末尾数字,从而识别出 'P@ssw0rd1' 实际上就是常见密码 'password'。
- 3给出评分和破解时间调整后的熵值和一个九项检查清单(长度、字符类别、无连续重复、不是已知常见密码)共同决定从“非常弱”到“强”的评分。破解时间按每秒 100 亿次猜测估算——这是离线 GPU 攻击的典型数值——计算方式为 2^熵 / 10,000,000,000。
- 4通过 k-匿名性进行可选的泄露检查如果你点击“检查已知泄露”,Web Crypto API 会在浏览器中本地用 SHA-1 对你的密码进行哈希。只有该哈希的前 5 个十六进制字符会发送到 Have I Been Pwned 的范围查询 API;后缀在客户端匹配。完整哈希——以及密码本身——绝不会离开你的设备。
你的密码绝不会被传输到任何地方——所有强度分析都在本地的 JavaScript 中运行,可选的泄露检查使用 k-匿名性(只向 Have I Been Pwned API 发送 5 个字符的哈希前缀,使该服务在数学上不可能还原你的密码)。
指南
操作示例
点按“密码”输入框,输入 9fK2!xQ。它显示为圆点;点按“显示”即可读取。页面报告:强度“良好”,熵值“46 位”,“快速哈希(每秒 100 亿次猜测)”为“2 小时”,“慢速哈希,bcrypt 类(每秒 1 万次)”为“206 年”。由于这个密码只有 7 个字符,“需要改进的地方”显示“太短:只有 7 个字符。长度最重要。”,而“密码要求”列表中“至少 8 个字符”和“至少 12 个字符”标有空心圆,其他行则通过。点按“为我生成强口令短语”,得到六个随机单词,例如 proud-gate-merry-wise-brave-fancy,标注为“随机口令短语,约 53 位”。现在把文本换成 Summer2024。强度降为“极弱”,熵值降为“0 位”,两个时间都显示“即时”,“需要改进的地方”显示“它在最常见密码的列表中。”和“包含年份(2024),攻击者会优先尝试。”
使用哪些设置,以及限制
- 把分数当作估算来看。 “极弱”“弱”“良好”和“强”来自熵值估算,再加上满足的要求数量。熵值低于 28 位时,分数不会高于“极弱”,低于 40 位不会高于“弱”,低于 60 位不会高于“良好”。命中内置的常见密码列表会强制判为“极弱”,基于常见单词或名字构成的密码最高只能是“弱”。琥珀色的“仅为启发式评估。”说明,分数依据的是结构和内置的简短列表,所以一个不在这两个列表中的弱密码仍可能得到较高分数。
- 对比两个破解时间。 两个数字都是用猜测次数除以猜测速率得出的。“快速哈希(每秒 100 亿次猜测)”假设每秒 100 亿次猜测,对应快速计算的哈希。“慢速哈希,bcrypt 类(每秒 1 万次)”假设每秒 1 万次。卡片下方的说明指出,这些估算假设攻击者窃取了哈希后的密码并离线猜解,而限制登录次数的网站要难攻击得多。时间在不到一秒时显示“即时”,然后是几秒直到几年,之后例如 12K 年、“数百万年”,超过十亿年则显示“实际上无法破解”。
- 使用可选的泄露检查。 点按“检查已知泄露”,可在 Have I Been Pwned 的数据中查询这个密码。浏览器会生成密码的 SHA-1 哈希,只把前 5 个字符发送到 api.pwnedpasswords.com,其余部分在您的设备上比对,所以密码本身从不会被发送。结果是“在 12,345 个已知泄露中发现”,并建议不要使用,或者“未在任何已知泄露中发现。”勾选“停止输入后自动检查”,会在您停顿 0.9 秒后运行,从 4 个字符起;这个选择会记在此浏览器中。编辑密码会清除旧的结果。
- 分数不是“强”时,使用口令短语按钮。 当有内容输入且分数为“极弱”“弱”或“良好”时,“为我生成强口令短语”会出现在“需要改进的地方”下方。它用浏览器的安全随机数生成器,从约 490 个简短英文单词的列表中挑出六个,用连字符连接,并标注为“随机口令短语,约 53 位”。“复制”会复制它,“在此测试”会把它放入输入框并显示出来。此后检查器会把它当作普通字符来评分,所以它的熵值远高于 53 位。请相信 53 位的标注,它只计算随机选词的部分。
- 了解要求列表检查什么。 列表显示“至少 8 个字符”“至少 12 个字符”、小写和大写字母(对于阿拉伯文、希伯来文或中文这类没有大小写的文字,则为“包含字母(任何文字)”)、“包含数字”“包含特殊字符”“不是常见密码”“无重复字符(连续 3 次及以上)”和“没有常见模式(123、abc、qwerty、年份)”。常见密码检测会忽略大小写、重音、两端的数字和符号,以及把 @ 换成 a、把 0 换成 o 之类的替换,所以 P@ssw0rd!! 会被识别出来。“需要改进的地方”最多显示两条结果。
- 用“显示”检查您输入的内容。 输入框会把密码显示为圆点,并关闭拼写检查和自动大写。点按“显示”可读取它,点按“隐藏”则再次遮住。密码只存在于打开的页面中;浏览器里保存的唯一内容是自动泄露检查的设置。其他文字的密码按文字种类评分:西里尔文、希腊文、阿拉伯文、希伯来文、亚美尼亚文、格鲁吉亚文、印度系文字、泰文、日文假名、韩文和汉字各自增加一个可能字符池,不会被当作符号。
常见问题及解决方法
- 它显示“泄露检查失败 — 检查您的连接并重试。”
- 泄露查询是页面中唯一使用网络的部分。它向 api.pwnedpasswords.com 请求与您的 5 个字符前缀相同的哈希后缀列表,当这个请求失败或服务返回错误时,就会出现这条提示。请确认您已联网,并且没有任何东西拦截该地址,然后再次点按“检查已知泄露”。强度评分不使用网络,所以仍能正常工作。
- 一个看起来很复杂的密码,强度显示“极弱”,熵值显示“0 位”。
- 这个密码命中了常见密码列表,这会把熵值设为 0,两个破解时间都设为“即时”,分数设为“极弱”。匹配会忽略大小写、重音、两端的数字和符号、4 换 a、3 换 e、0 换 o 这类相似字符替换,以及开头的“my”或“the”。所以 Password123!、P@ssw0rd!! 和 mypassword 都被视为同一个著名的密码。请选择与任何单词无关的内容。
- 它显示“基于常见单词“istanbul”。”(显示您自己的单词)。
- 去掉两端的数字和符号、还原相似字符替换之后,这个密码是内置列表中的某个名字、月份、城市或日常单词。此时分数最高只能是“弱”,熵值被限制为该单词本身的代价,加上装饰部分的几位:每个数字 3.4 位,每个符号 5 位,一个大写字母 1 位。末尾的年份总共约算 7 位。请加上互不相关的单词,或使用口令短语按钮。
- 它显示“键盘或字母顺序连续串“qwerty123”。”(显示您自己的连续串)。
- 来自键盘某一行、像 qazwsx 这样的对角线、数字行、字母表或数字 0 到 9 的三个或更多相邻字符,无论正向还是反向,都算作连续串。AZERTY 和俄语键盘上的同样行也算。连续串内的字符只按正常强度的四分之一计算,并且“没有常见模式(123、abc、qwerty、年份)”这一行会失败。请用互不相关的字符把连续串打断。
- “为我生成强口令短语”按钮不见了。
- 它位于“需要改进的地方”面板内,而该面板只在输入框不为空且强度为“极弱”“弱”或“良好”时显示。当分数为“强”时面板隐藏,输入框为空时只显示输入框。要在空输入框的情况下得到口令短语,请先输入任意简短的文字,然后点按该按钮。
对比分析
这个页面给出的是估算,不是裁决。它使用简短的内置常见密码、名字和单词列表、键盘模式检测和字符池熵模型,对您的姓名、生日或您要为之设置密码的网站一无所知。可选的泄露检查使用公开的 Have I Been Pwned 范围查询服务,只能告诉您这个确切的密码是否出现在泄露的数据中,而不能告诉您相似的密码是否出现。对于随机字符密码,页面提供了指向密码生成器的链接(“生成强密码”),口令短语则由它自己生成。它不会存储密码,也不会检查网站如何对密码做哈希,所以这两个破解时间都是关于攻击者速度的假设。