密码生成器与强度检测

全球通用工具

三件事集成在一个页面:生成随机密码、生成真正记得住的口令,或检测一个你已经有的密码。两个生成器都从浏览器自带的密码学随机源取数,都没有种子框——这与本站其他生成器相反,而且是有意为之:一个能从数字复现的密码,就是任何知道那个数字的人都能复现的密码。

生成随机密码、生成容易记住的口令,或检测一个你已经有的密码。检测模式永远不会接触服务器,也永远不提供下载。

最多 50 个。整批密码也会写入两个下载文件,因此可以保留一个、丢弃其余。

字符数,最多 128。最宽字母表的二十个字符约 128 位,到了这里算术已不再是有趣的问题。

字母表决定位数:二十个小写字母是 94 位,全部字符是 128 位。

I、l、1、O、0 和 o 是人们照着截图最容易打错的字符。去掉它们大约花掉 128 位中的 2 位,却省下一次客服沟通。

留空时两个文件是 “generated-passwords.txt” 和 “generated-passwords.csv”。检测模式完全没有下载。

边输入边更新。所有计算都在你的浏览器里完成,数据不会离开本机。

已生成密码

5

每个密码是 20 个字符,来自 86 个字符的字母表,因此约 128.5 位。这里故意没有种子:这一批无法复现,这正是它成为密码而不是模式的原因。

字符数
20
字母表
86 4 个类别
熵
128.5 位
离线攻击
宇宙年龄的 1.1 x 10^10 倍(138 亿年) 每秒 100,000,000,000 次猜测

猜出它需要多久

攻击者每秒猜测次数时间
离线,针对快速哈希100,000,000,000宇宙年龄的 1.1 x 10^10 倍(138 亿年)
离线,针对 bcrypt 或 argon210,000宇宙年龄的 1.1 x 10^17 倍(138 亿年)
在线,针对登录表单10宇宙年龄的 1.1 x 10^20 倍(138 亿年)

假设攻击者知道所使用的设置——长度、字母表、词表——并把整个空间除以他们的速度。这是页面推理所用的三种速率,不是对任何特定机器的测量。

你的密码

+D]u%d6[SA&,Wc/,IZ89
UF&J}UxwZn5FNkn2(v_5
xEL4;#Q]i0mrt)yWS+_h
TbbH^o@}qw4IQ6uF!_S9
Q#f&tn0WewXNm3O[C.Ci

复制一个,或下载整批。下载文件是纯文本,顶部写着设置,这个文件值得像密码本身一样对待。

数字没有说的事

  • 你保留的每一类字符都保证至少出现一次,所以坚持要数字的网站不会因为运气而落空。这会占掉一点空间,打印出的数字因此是上界;二十个字符时看不出差别,四个字符时就很明显。
  • 生成器抽取的字母表是 86 个字符,而本页的强度计使用所有强度计都在用的常规类别大小(26 + 26 + 10 + 33 = 95)。两个数字都会打印,因为它们不同,而且都不是错误:本页的过滤器保留了 24 个标点字符(没有引号、反斜杠和空格,密码才能粘进终端)。
  • 这里没有种子框,而这是本站唯一一个故意不提供种子的生成器:一个能从数字重新生成的密码,就是任何知道那个数字的人都能重新生成的密码。抽取使用 crypto.getRandomValues,也就是浏览器的密码学随机源。
  • 五十个密码会写进一个下载文件和一个 CSV。那些文件就是密码本身——把它们放在密码管理器能取到、别处取不到的地方,或者干脆不要下载,只复制你需要的两个。
  • 一个地方用强密码、其他地方都用弱密码,仍然是一次泄露。重复使用才是实践中真正有效的攻击,没有生成器能修复它:答案是密码管理器,以及每个网站一个密码。
在当前浏览器标签页里、由浏览器的密码学随机源生成。没有向任何地方发送内容,下载文件是在你点击时构建的,而不是在页面构建时,所以服务器上从未存在过任何密码。

检测这一半最需要诚实。每个强度计都是估算,所以这里打印公式、它除以的三种攻击者速度,以及它能看出的缺陷清单——同时明说它看不见什么,首先是一个由词典单词组成的口令在字符公式面前显得远比实际强。

关于这个工具

强密码需要更长、更随机,还是更好记?这个页面生成两类:从浏览器密码学随机源抽取的随机字符串,以及由普通单词组成的口令;也能检测你已有的任何密码,并打印强度数字背后的公式,而不是只给一条彩色条。

强度计的算术来自对密钥空间的猜测量估算:长度乘以字母表大小的 log2,再除以三种明确展示而非隐藏的攻击者速度。这里故意没有种子框,与本站其他生成器相反,因为一个能从数字复现的密码,任何知道那个数字的人都能复现。

每个强度计都是估算,所以这里会列出它能看见什么,并明说它看不见什么:由词典单词组成的口令,在字符公式面前远比实际强。所有计算都在浏览器本地完成,你输入的任何内容都不会发送到任何地方。

它是怎么工作的

随机密码:长度 x log2(字母表),一路算上去

字母表由预设决定:字母、数字和标点共 86 个字符,字母加数字 62 个,仅字母 52 个,仅小写 26 个。每个字符都来自 crypto.getRandomValues 上的均匀抽取,你保留的每一类字符至少出现一次,因此要求必须含数字的网站不会因为运气而失望。

因此位数是 `length x log2(alphabet)`,页面会把它打印出来:最宽字母表的二十个字符约 128 位,二十个小写字母约 94 位。二十也是这个页面不再假装你需要更多的地方——超过这一点,真正的问题不是密码本身,而是你是否在重复使用它。

易混字符,以及两个字母表大小为何不同

易混过滤器会移除 I、l、1、O、0 和 o——人们照着截图重新输入密码时最容易打错的字符。它从 128 位里花掉约 2 位,却省下一次客服沟通;页面同时显示两个大小,让代价看得见。

生成器的字母表是 86 个字符,其中有 24 个标点,因为引号、反斜杠和空格被排除,密码才能粘进终端。强度计使用所有强度计都在用的常规类别大小,加上标点后合计 95。两个数字都会打印,而生成密码在强度计里的数字采用常规值——略微乐观,但乐观得诚实,并且在页面上解释,而不是埋进常量里。

口令:324 个单词,每个 8.34 位,在你眼前相加

口令比同等强度的随机字符串更容易记住、也更容易输入,这就是这个模式存在的原因。词库是 324 个具体的短词——动物、食物、地点、物件——因为功能词会让口令难记却好猜。每个词值 log2(324) = 8.34 位,所以六个词约 50 位,八个词约 67 位,还不算可选的数字和随机大写。

单词是有放回抽取的,这是 diceware 的规则:一个口令可以重复某个词,禁止重复会悄悄把搜索空间缩得比打印出的数字更小。口令的强度取决于单词数量而不是单词长度,因为口令是用词表攻击的。

检测:这个数字意味着什么,又看不见什么

强度计统计你输入内容中的字符类别,乘到 `length x log2(alphabet)`,再把这个空间除以三种攻击者速度:对泄露数据使用快速哈希,每秒 1000 亿次猜测;bcrypt 或 argon2 这类慢哈希,每秒一万次;以及带速率限制的在线表单,每秒十次。把速度打印出来,才把数字和主张区分开。

它还会检查破解者最先尝试的模式:最常用密码、连续三个及以上相同字符、字母和数字的连续序列、键盘行、年份、纯数字,以及任何少于十二个字符的内容。这些缺陷用页面自己的话列出,并且允许它们把数字旁边的词拉低——一个重复十六次的字符,无论位数多少,都不会被称为强。

它看不见的是:密码是否出现在泄露事件中,那需要查询,而本页不发出任何网络请求;还有谁知道它;你是否在另外五个网站用过它;以及它是否来自尚未被加入词表的模式。它也看不见形状:由本站词库之外的词典单词组成的口令,按字符公式会得到堡垒般的分数,所以缺陷清单会说明这一点,任何读起来像短语的内容,标签都会被限制在 Fair。

示例

示例使用页面自带的默认输入,只改设置;下面的结果与你在页面上看到的完全一致。

二十个字符的五个密码

你想做什么: 生成随机密码,最强的选项 · 数量: 5 · 长度: 20 · 字符集: 字母、数字和符号,四种中最宽 · 排除易混字符: 否,保留完整字母表 · 下载文件名: —

已生成密码

5

每个密码是 20 个字符,来自 86 个字符的字母表,因此约 128.5 位。这里故意没有种子:这一批无法复现,这正是它成为密码而不是模式的原因。

字符数: 20 · 字母表: 86 · 熵: 128.5 位 · 离线攻击: 宇宙年龄的 1.1 x 10^10 倍(138 亿年)

框里的五个密码是在页面生成页面时生成并写入静态 HTML 的,因此它们是示例批次,不应拿来使用。在线页面每次按下按钮,都会从浏览器的密码学随机源生成五个新的。

带两位数字的六词口令

你想做什么: 生成口令,由单词组成,因此记得住 · 数量: 3 · 单词数: 6 · 单词连接方式: 连字符,如 cotton-sunset-harbor · 数字: 末尾加两位数字 · 随机大写: 否,每个词都小写 · 下载文件名: —

已生成口令

3

每个口令约 56.7 位:6 个词 x log2(324) = 50.0,数字加 6.6。

单词数: 6 · 词库: 324 · 熵: 56.7 位 · 输入长度: 43 个字符

约 56.7 位:六个词各 8.34 位,加上两位数字的 6.6 位。算术会打印在结果下方,因此数字可以核对,而不是只能相信。

检测一个出现在所有词表里的密码

你想做什么: 检测已有的密码,不会在任何地方被检查 · 要检测的密码: ••••••••

按算式得出的强度

极弱

9 个字符,2 个字符类别,因此位数 = 10.0,已按最常用密码列表取下限。

长度: 9 个字符 · 字符类别: 2 · 字母表: 36 · 熵: 10.0 位

四项缺陷、十位:来自最常用列表的内容会被强度计压到下限,因为长并不等于难以猜出;标签正是缺陷被允许说话的地方。

常见问题

把我的密码输入这个页面安全吗?

页面完全不发出网络请求——没有服务器可以接收任何内容,页面自带的隐私检查会检查打包文件中没有任何 fetch 调用。检测框是密码字段,框架不会把它的值写进地址栏,检测模式也没有下载按钮。话虽如此,你不必输入真实密码:一个你正在考虑的模式同样可以完成算术。

密码应该多长?

最宽字母表的十六个字符约 103 位,二十个约 128 位。超过约 80 位后,密码不再是薄弱点,真正让人被入侵的事情——重复使用、钓鱼页面、哈希存储不当的网站——开始占据主导。如果某个网站不接受长密码,那件事本身就值得你知道。

应该用密码还是口令?

随机密码每个字符更强,但不可能记住,所以它属于密码管理器。口令适合少数必须自己输入的密码——管理器主密码、设备登录、Wi-Fi 密码——因为它经得起记忆。六个词约 50 位;想要更多就加词,而不是加符号。

为什么我的长短语只得到 Fair 而不是 Very strong?

因为字符公式看不见单词结构,而页面拒绝放过这一点。一个由词典单词组成的 28 字符短语,按公式约 165 位,面对词表攻击却远低于此;缺陷清单会说明,密码读起来像短语时标签会被限制在 Fair。如果每个词恰好都来自本页自带的 324 词词库,强度计还会打印基于词的数字,那才是适用的数字。

生成器会记住它生成的密码吗?

不会。没有存储、没有 cookie、没有分析,也没有种子:批次在标签页里生成,刷新页面就会得到不同的一批。这也是为什么页面无法显示所谓上次给你的密码——对本页而言不存在上次,而这正是密码应有的行为。

资料来源与统计口径

  • 密码来自浏览器的加密随机源,强度按标准的“长度 × log2(字符集大小)”计算。
  • 破解时间建立在三档明确写出的“每秒猜测次数”假设上,页面把假设一并展示,方便你自己判断。
  • 六十条最常用密码只是一条下限,不是词典;页面不会把密码送去泄露查询,因为什么都不会上传。

最近复核于 2026-09-16.

本页在您的浏览器本地运行,请保留原文件备份;不涉及财务建议。 阅读完整免责声明。