生成内容
生成随机密码、易记的密码短语或数字 PIN,并查看它们有多少位熵,以及暴力破解需要多长时间才能猜中。所有计算都在你的浏览器中使用系统的加密随机数生成器完成:你生成或输入的任何内容都不会发送到服务器。
4 到 128 个字符
例如你的系统不接受的符号
结果
评估你自己的密码
在你的浏览器中分析,不会被保存,也不会出现在分享链接中

工作原理

随机生成的密码强度并不取决于它"看起来多复杂",而取决于生成器能从多少种可能的组合中进行选择。这个数量用熵的位数表示:每多一位,攻击者的工作量就翻一倍。一个混合小写、大写、数字和符号的 20 位密码来自 94 个字符的字母表,约有 131 位;同样的字母表只用 8 位时降到 52 位,GPU 集群几天就能穷举完。

密码短语用单词代替字符。本工具使用 EFF 长词表,共 7776 个单词(6⁵,即五颗骰子的组合数),因此每个单词增加 12.9 位。五个单词共 64.6 位,相当于 10 个完全随机的字符,但更容易记忆和输入,这对密码管理器的主密码或磁盘加密尤为关键。

所有内容都在你的浏览器中通过操作系统的加密随机数生成器 crypto.getRandomValues 生成,并使用拒绝采样确保任何字符出现的概率都不比其他字符高。生成的密码和你在最后一张卡片中评估的密码都不会离开你的设备,被评估的密码也不会保存在分享链接中。

示例

20 · a-z A-Z 0-9 !@#…≈ 131 bits20 × log₂(94)。即使每秒尝试 100 亿次,遍历一半组合也需要约 4.6 × 10²¹ 年。
5 × EFF≈ 64,6 bits5 × log₂(7776)。面对快速哈希,一块 GPU 平均约需 45 年;如果网站用 bcrypt 存储密码,则需要 4500 万年以上。
8 · a-z A-Z 0-9 !@#…≈ 52 bits一旦快速哈希泄露,八位字符就不够了:以每秒 100 亿次计算,大约 85 小时就能遍历一半空间。
PIN · 61 000 000 · ≈ 19,9 bitsPIN 之所以安全,只是因为设备或银行限制了尝试次数。每小时 100 次时,尝试一半组合约需 208 天;若没有限制,则转瞬即破。

使用场景

  • 为每个账户创建唯一的密码,并保存在密码管理器中。
  • 为需要凭记忆输入的内容选择密码短语:管理器主密码、磁盘加密或电脑登录。
  • 为配置文件和密钥管理器生成服务凭据、API 密钥或数据库密码。
  • 为新用户批量生成初始密码,排除易混淆字符,以便口述或打印阅读时不出错。
  • 去掉引号、反斜杠等不被接受的符号,以适应规则奇特的系统。
  • 在决定是否更换之前,检查你正在使用的密码是否容易被预测。

常见问题

密码需要多少位?

对于有尝试次数限制的网站账户,60 位绰绰有余。如果密钥可能遭受离线攻击,例如密码管理器的主密码或保护加密文件的密钥,应以 80 位或更高为目标。超过 128 位就没有实际意义了:任何可以想象的攻击者都已无法企及。

长密码更安全还是带符号的密码更安全?

长密码。把可用字符从 62 个增加到 94 个,也就是加入符号,每个字符只增加 0.6 位;而多加一个字符就能增加 6 位以上。因此 NIST 在 SP 800-63B 指南中要求网站接受长密码,并停止强制"至少包含一个符号"之类的组成规则。

为什么密码短语使用英文单词?

因为 EFF 词表是专为密码短语精选的:都是常用词,没有冒犯性词汇,易于输入,而且没有任何一个单词是另一个单词的前缀,因此不加分隔符拼接时也不会产生歧义。安全性不取决于语言,而取决于词表的大小和选择是否随机;即使攻击者知道整个词表,每个单词仍需尝试 7776 种可能。

为什么评估结果与熵值不同?

因为两者衡量的东西不同。熵适用于随机生成、生成过程确切已知的密钥。人编出来的密码几乎从来不是随机的:"Argentina2024!" 有四类共 14 个字符,但它是一个字典单词加一个年份再加结尾的符号,正是破解程序最先尝试的组合。评估器会查找这些模式,估算实际需要多少次尝试。

在网页上生成密码安全吗?

只要计算在你的浏览器中进行且不发送任何内容,就是安全的,本工具正是如此:打开开发者工具,可以看到网络面板没有记录任何数据发送;唯一的下载是你第一次请求密码短语时的词表。尽管如此,对于最关键的凭据,最好还是让你要保存它们的密码管理器直接生成,这样密码就不会经过剪贴板。

为什么要排除易混淆字符?

因为在许多字体中,0 和 O,或 1、l 和 I 几乎一模一样,需要从纸上读取或通过电话口述的密码最终会被抄错。排除它们会让字母表和每个字符的熵略微减少,只需把长度增加一两个字符即可弥补。