免费密码强度检测器

输入任意密码,查看其强度、破解所需时间以及改进方法。

本地分析 · 您的密码不会发送到任何地方
请在上方输入密码
0
字符数
0
熵 (位)
-
破解时间 (每秒100亿次)
0/6
评分

字符检查

密码强度的计算方法

密码强度回答的是一个问题简单、答案复杂的问题:攻击者需要多少次猜测才能找到你的密码?朴素公式(熵比特 = 长度 × log2(字符集大小))给出一个整齐的上界,但它假设攻击者是对整个密钥空间做纯暴力破解。真实攻击者不会这么做。他们会先用可能密码的字典开始(rockyou.txt 语料库和公共泄露的前一百万),施加模仿人类实际所做替换的转换规则(l33t-speak、首字母大写、追加 1! 或四位年份),只有当模式都对不上时才退回到暴力破解。一个按字符类别的强度计看到 P@$$w0rd99 是四种字符类都齐了,给它打高分。真实破解器在几秒内就把它破了,因为它里面的每一个模式都在头部规则列表里。

这个工具同时报告两个数字:来自字符集与长度的朴素熵,加上一个独立的强度评分,它会像知情攻击者一样,把可识别的模式(字典词、像「zxcvbn」底行那样的键盘行走、重复、序列、日期)降分。当你的密码包含可预测结构时,这两个数字就会出现分歧,而那正是你最需要知道的时候。

密码安全简史

计算机最初并没有密码。1960 年代初分时系统出现之前,所谓「计算机」是一台单用户机器,安全模型就是一道锁着的门。计算机密码的主流故事始于 MIT 的 Project MAC,Fernando Corbató 的 Compatible Time-Sharing System(CTSS)让一台机器能被很多人同时使用。一旦多个用户共享一个文件系统,人们就能读到彼此的文件。Corbató 一般被认为是引入密码提示作为最简单可能解的人:用户与机器之间的一个共享秘密,证明你有权访问你所请求的文件。具体日期在二手来源中众说纷纭(1960 至 1963 之间),但到 1960 年代中期,密码已成为多用户系统的标准特性;1965 年开始运行的 CTSS 后继者、更具雄心的 Multics,继承并大幅扩展了 Corbató 的设计。

下一个奠基时刻是 1979 年 11 月,Bell Laboratories 的 Robert Morris 和 Ken Thompson 在 Communications of the ACM 上发表了 «Password Security: A Case History»。这篇论文很短(不到五页)而且实用到几乎令人尴尬。其中两个想法成为之后任何严肃密码存储系统的基石。第一,单向哈希:与其存储密码本身,系统存储一个由密码很容易算出但实际上无法反推的值。第二,加盐:在哈希之前给每个密码追加一个 12 位随机值,这样两个相同密码的用户也会产生不同的存储哈希,攻击者也无法预先算一份对所有人都有效的哈希字典。Morris 与 Thompson 注意到,这把攻击一份被盗密码文件的工作乘以 4 096,即 212,盐空间的大小。此后四十年里关于 bcrypt、scrypt 与 argon2id 的所有讨论,在某种意义上都是 Morris 和 Thompson 那篇论文的注脚。

熵这个数字从哪里来

度量单位是 熵比特,来自 Claude Shannon 1948 年的论文 «A Mathematical Theory of Communication»,分两期发表在 Bell System Technical Journal。Shannon 的论文开创了信息论这一领域,并把「bit」一词送给世界,Shannon 将这个术语归功于 John Tukey。翻译到密码场景:一个密码的熵是同一过程可能产出的不同密码数的 log2。如果生成器从 R 个可能字符的集合中独立、均匀地挑选每一个字符,产生长度为 L 的密码,那么有 RL 个等概率的密码,熵为 L × log2(R) 比特。从 95 个可打印 ASCII 字符里均匀挑出的 12 位密码大约携带 78.8 比特。每多一比特,攻击者的工作量就翻倍;这是指数关系,正因如此,给随机选出的密码加两个字符比单纯替换一个字符要重要得多。但有一个,而且是很大的一个,告诫:真实密码几乎从来不是通过均匀随机抽样产出的。人们会选生日、伴侣名字、字典词、键盘模式和序列。所以朴素公式只是强度的上界,而且通常是相当宽松的上界。

NIST 与 2017 年的范式转变

几十年里,美国关于密码规则的主导制度声音一直是 NIST,即国家标准与技术研究院。它早期的出版物给了我们如今的密码政策民间智慧:至少八位、大小写混合、必须含数字、必须含符号。在安全研究界已经得出「这种指引实际上适得其反」的结论很久之后,这套指导仍被广泛抄进企业 IT 政策。2017 年,在 NIST Special Publication 800-63B 中,该机构正式推翻了旧指引最痛苦的部分。关键改动包括:不再强制定期更换密码,除非有证据表明密码已被泄露,研究表明强制九十天重置会让用户选择更弱、更可预测的密码(把一个字母改成大写再加 1 是经典例子),把轮换的目的完全废掉。不再强制组合规则,验证方不该要求特定字符类别,因为这会把用户推向像 P@ssw0rd! 这样可预测的替换,而不是更强的密码。长度才是主导因素。对照已知泄露列表检查密码,这是单项最有后果的操作变化,也是 Have I Been Pwned 的 Pwned Passwords 语料库会以现在这种形式存在的原因。NIST 于 2025 年 7 月 31 日发布了下一次重要修订的最终版 SP 800-63B-4,强化了 2017 年的方向,并把它扩展到抗钓鱼认证器(包括 passkey 所使用的那种可同步认证器)。

zxcvbn,为什么现代强度计看起来都一样

大多数认真的密码强度计在表面上长得差不多,原因是大多数都在运行同一份代码,或者受其启发。这份代码就是 zxcvbn,一个开源、能识别模式的估计器,由 Daniel Lowe Wheeler 于 2012 年 4 月在 Dropbox 首次发布,后来在 2016 年 8 月第 25 届 USENIX Security Symposium 的同行评审论文中被形式化。这个名字本身就是个玩笑,它是 QWERTY 键盘最下面那一排,正是该库专门要识别并降分的那种密码。zxcvbn 会按字典匹配大约 3 万个常见密码,加上美国人口普查的名字与姓氏、常用英语词、Wikipedia 词条以及美国影视片名;l33t-speak 替换(所以 p@ssw0rd 被视为 password);键盘行走如 qwertyuiopasdfghjkl;重复(aaaaabcabcabc);序列(abcdef12345);以及人类可信范围内的日期。然后它计算最小猜测分解(能解释整个密码的最便宜的已识别模式组合)并把每个模式的猜测次数相乘,估算出一个有信息的攻击者所需要的总猜测次数。这个库可在浏览器中部署,但并不轻量:打包并压缩后,zxcvbn 约 400 KB(gzip),其中大部分是字典本身。这个体量对于像本页这样的单一用途页面足够小,但又重到维护者明确警告不要把它打进通用 Web 应用的每一页。

「破解时间」到底意味着什么

每一个强度计(包括本工具)都会显示一个「破解所需时间」的估计。诚实的回答是:这是最容易报告、却最难辩护的数字之一,因为它几乎完全取决于用户看不到的假设。最基本的假设是攻击者的每秒猜测次数。这不是一个数字,而是约十个数量级的范围,取决于攻击者偷到了什么、防御者用了什么哈希方案。未加盐的 MD5 或 SHA-1:一张 2022 年的消费级显卡 NVIDIA RTX 4090 用标准破解工具 hashcat 能算到每秒约 1,500-1,650 亿次 MD5 哈希。一台机器里塞八张这样的卡,每秒数就突破一万亿;AWS 或 Google Cloud 上租来的多 GPU 实例每小时几美元到几十美元。对于使用未加盐快速哈希的密码存储,普通密码基本毫无防御。合理代价系数下的 bcrypt:bcrypt 于 1999 年专门设计为在并行硬件上很慢。代价系数 12(业界大致默认)下,单张 GPU 每核每秒只能做几百到几千次猜测,不是几百亿。对 bcrypt 的破解时间比对 MD5 长几百万倍。scrypt 与 argon2id:这些方案增加了内存难度(每次猜测不仅需要 CPU 周期,还需要可观的 RAM)这让在合理参数下用 GPU 与 ASIC 并行变得代价高得令人却步。Argon2id 是目前 OWASP 的推荐,也是 2015 年密码哈希竞赛的胜者。

一个只引用单一破解时间的强度计,充其量给你的是「攻击者偷到了一个快速哈希数据库」这种最坏情况下的答案。这也是通用强度计唯一诚实的默认值,用户无法预先知道下一个被攻破的服务用的是 MD5 还是 argon2id。本工具假设的 100 亿次每秒,与最坏情况快速哈希的量级相当,比顶级机架的绝对峰值低一个量级,但能代表一个决心攻击的人花小预算所能租到的能力。

2009 年 RockYou 泄露与「重用为何致命」

RockYou,Facebook 与 MySpace 插件的制作商,把大约 3,200 万用户密码以明文存储。2009 年 12 月,一名攻击者利用 SQL 注入漏洞导出了整个用户数据库,明文密码被公开发布。去重后的词表 rockyou.txt(约 1,400 万个唯一密码)现在几乎是全世界每一个密码破解工具的默认起步字典。任何曾出现在那次泄露里的密码,从实用角度看都是永远可被瞬间破解的,无论它的朴素熵看起来多强。这也是为什么密码重用是大多数用户账户面临的单项最大实际风险。一个在五十个网站上重用同一个密码的用户,只要其中一个泄露就完了;为每个服务设独立密码的用户,需要五十个都泄露才完。已知泄露密码的参考数据集是 Have I Been Pwned,由澳大利亚安全研究者 Troy Hunt 于 2013 年 12 月 4 日上线。Pwned Passwords 子系统索引的被泄露 SHA-1 密码哈希远超十亿个唯一项,仅 2025 年 11 月那一次更新就新增了约 13 亿个新看到的密码。

k-匿名,既不暴露密码又能查询它

Pwned Passwords 巧妙的地方在于 API 设计,它解决了一个历史上很严重的隐私问题:怎么让第三方帮你查一个密码是否在已知泄露名单里、却不把密码发给它?朴素做法(把你的密码 POST 给服务)恰好制造了用户原本想避免的那个问题。Junade Ali 于 2018 年在 Cloudflare 设计的 k-匿名方案是这样的:客户端计算密码的 SHA-1;客户端只发送该哈希的前五个十六进制字符(这一前缀标识约一百万个可能桶中的一个);服务器返回所有以该前缀开头的哈希的后缀,通常是几百条匹配;客户端在本地核对完整哈希是否在返回列表里。服务器始终不知道用户在查哪个密码;它只知道大约一百万个前缀桶中的一个,单独看就能识别数百个可能的密码。这与匿名化医疗记录所用的统计匿名模型是同一种:每次查询在统计上与至少 k 个其他查询不可区分。浏览器密码管理器、企业身份系统以及认真的强度计都使用同样的前缀-后缀协议。

用密码管理器

支持密码管理器的论点不在于它能让你对泄露免疫(做不到,而且几款密码管理器自己也曾被攻破)而在于它让你为每个服务都有独立密码,所以你用的某个服务下次泄露时不会顺便危及你的银行账户。KeePass 是被广泛使用的最古老的密码管理器,由 Dominik Reichl 于 2003 年 11 月首次发布。1Password(由 AgileBits 出品)的第一版于 2006 年发布。Bitwarden 是开源、支持云同步的主导型管理器,于 2016 年 8 月上线。现代建议(记一句强主口令,让管理器生成其余的一切)被 NIST、OWASP、EFF 以及几乎所有认真的安全机构所共享。这句主口令就成为你唯一真正需要记得很牢的密码;管理器处理其余一切,为每个服务生成 20 位随机字符串,自动为你填入,并在你重用某个密码时警告你。如果你只从这一整页里带走一条建议,请带走这一条。

对必须靠记的密码,请用 passphrase

对于那些你真的必须背下来的密码(你的密码管理器主口令、电脑登录密码、手机解锁密码)passphrase 强过密码。2011 年 8 月 10 日发布的 XKCD #936(«Password Strength»)把这个观点带给了广大受众:correct horse battery staple 是四个随机英语词,对人来说比 Tr0ub4dor&3 更容易记,而对计算机来说要难猜上好几个数量级。数学上很直接:如果你从大小为 N 的词表中均匀取词,每一个词贡献 log2(N) 比特的熵。1995 年由 Arnold Reinhold 发明并最初在 Cypherpunks 邮件列表分发的 Diceware 系统,用一个 7,776 词的词表(每个词由五次掷六面骰子选出)把这件事形式化。每个 Diceware 词贡献约 12.9 比特熵;六个词的 passphrase 大约携带 77 比特,Reinhold 推荐这一数值作为日常使用的下限。Electronic Frontier Foundation 在 2016 年 7 月发布了自己改良的长词词表,词的选择兼顾好记和长度(平均七个字母,对比 Diceware 的约 4.3 个)。在相同词数下,EFF 词表与原版 Diceware 词表的安全性相同;EFF 词表只是用起来更顺手。关键告诫是:那些词必须是真正随机的,由骰子或真随机数生成器挑出。从歌词、电影台词或著名圣经经文里挑的 passphrase 都已经在每一个字典攻击者的词表里,强度并不比一个字典词更高。

Passkey:长期替代品

更长期的方向是高价值账户彻底离开密码世界。2022 年 5 月 5 日,Apple、Google 与 Microsoft 联合宣布扩大对 FIDO 标准的支持,并推出基于 passkey 的无密码登录流程,能跨设备、跨平台同步。passkey 是保存在用户设备上的一份公钥凭据;私钥从不离开设备,公钥注册到依赖方,认证过程是一次密码学的挑战-响应,在密码所做不到的方式上免疫钓鱼。FIDO 联盟于 2025 年初报告称,超过 150 亿个在线账户已经可以使用 passkey,且仅 2024 年一年采用率就翻了一番。Google 于 2024 年底报告称,超过 8 亿个 Google 账户至少配置了一把 passkey,登录成功率上升约 30%,登录速度平均提升约 20%。主要平台(Amazon、Apple iCloud Keychain、Google Password Manager、Microsoft Authenticator)如今全都支持同步 passkey。passkey 还不是完整的替代品(许多较小的网站不支持,恢复流程因平台而异),但对于支持它的账户(越来越多地包括邮箱、社交媒体、银行和主流 SaaS 平台)passkey 是正确答案,强密码只是一个尚可的次选。

隐私:为什么「只在浏览器里跑」的检查器很重要

任何把密码发到服务器的「测一测你的密码」工具,按构造就是一个风险,包括历史上把分析放在服务器端的大多数密码强度计。一个现代工具该走的模式(也是本页所遵循的模式)是密码永远不离开你的浏览器。强度估计器在本地运行;熵的数字在本地算出;建议在本地生成。什么都不被记录、什么都不被存储、什么都不过网络。这才是值得清楚说出来的隐私论点。它也是密码工具里把可信实现与马虎实现真正区分开来的唯一论点。一个不能控制强度计源代码的用户,无法确认自己的密码没有被记录,但他至少可以在浏览器开发者工具里看网络活动,一个用户键入时不发任何网络请求的工具,能在几秒内被验证。这让「完全在你的浏览器里运行」不再只是一句营销口号,而是一句可被证伪的主张,那是一种好得多的主张。即便有这层保证,最稳妥的做法仍然是:对你今天真在用的密码,去测一个结构相似的(同样长度、同样字符混合、同样模式)而不是真密码本身。

七条要点

  1. 长度主导。实际下限是 12 位;对重要账户来说,16 位或更长是合适的下限。每加一个字符,暴力破解的搜索空间大致翻倍。
  2. 组合规则只是表演。一句长 passphrase 在任何诚实的指标上都胜过一个短的「大小写+数字+符号」字符串。
  3. 重用是最大的攻击面。一个泄露的密码就成了所有共享该密码的服务的钥匙。
  4. 对多数人来说,密码管理器就是答案。记一句强 passphrase,剩下交给管理器。
  5. 在支持的地方,passkey 比任何密码都好。它从设计上就是抗钓鱼的,并能在用户设备之间同步。
  6. 强度计是个估计器,不是保证。它假设了一个特定的攻击模型;面对充满模式的密码,真实攻击者可能做得比强度计给出的数字更好。
  7. 只在能验证时才相信一个强度计的隐私声明。完全跑在浏览器里的强度计,任何人都可以打开开发者工具验证;向服务器 POST 的强度计则不可。

常见问题

我的密码会发送到服务器吗?

不会。所有分析都在您的浏览器中进行。您的密码永远不会离开您的设备。

我的密码应该有多少个字符?

大多数账户至少12个字符,重要账户 (银行、邮箱、密码管理器) 16个字符以上。越长越安全。

密码短语比随机密码更好吗?

密码短语 (如 "correct-horse-battery-staple") 如果足够长 (4个以上随机单词) 可以非常强大。它们更容易记住,但应该真正随机 · 而不是歌词或名言。

为什么这个工具显示的分数和别的强度计不同?

因为不同强度计使用不同模型。一个朴素的按字符类计算的强度计看到 P@$$w0rd99 是四个字符类齐全,给它高分;一个能识别模式的强度计(仿效 Dropbox 开源库 zxcvbn)会识别出其中的字典词、l33t-speak 替换、末尾数字模式,并把它评为「几秒内可破解」。本工具同时报告两者:来自长度与字符集的朴素熵,加上一个识别模式的评分,它会把可识别结构降分。两者会在你的密码包含可预测模式时产生分歧,那也正是这种警告最有用的时刻。

我该信任那个破解时间估计吗?

作为最坏情况下的量级,可以。本工具假设的每秒 100 亿次猜测,与一个决心攻击的人用单张近代 GPU 破解未加盐 MD5 或 SHA-1 的量级相当(一张 RTX 4090 每秒可算 1,500-1,650 亿次 MD5;一台小机架就能推到万亿级)。对于使用现代正确哈希(代价系数 12 的 bcrypt、scrypt、argon2id)的服务,实际攻击会慢上几百万倍,但你无法预先知道下一个被攻破的服务用了哪种哈希方案,所以按最坏情况规划是稳妥的。

那要检查我的密码是否已经在某次泄露中出现,该怎么办?

为此请用 Have I Been Pwned 的 Pwned Passwords 服务(haveibeenpwned.com/Passwords)。它采用 Junade Ali 于 2018 年在 Cloudflare 设计的 k-匿名模型:你的浏览器算出你密码的 SHA-1,只发送前五个十六进制字符,服务器返回所有匹配的后缀;你的完整密码与完整哈希都不会过网络。该语料库包含十亿以上已知泄露的 SHA-1 哈希。浏览器密码管理器(1Password 的 Watchtower、Bitwarden 的数据泄露报告、Chrome 的 Password Checkup)会自动集成同一套 API。

相关工具