跳到正文
StartPrivate
菜单
语言:ZH

密码生成器

设定长度,选好允许的字符类型,点一下生成。密码在这台设备上产生,关掉标签页就没了。

在你的设备上运行,文件不会上传。 怎样自己验证

熵 99.7 比特

16 × log2(76) = 100.0 比特。缺少任一所选字符类型的密码会被丢弃重抽,按实际可能出现的密码总数精确计算,是 99.7 比特。

使用哪些字符

用 crypto.getRandomValues 在本机生成。生成的内容不会保存,也不会发送。

随机密码的强度等于长度乘以每个字符贡献的比特数。大写、小写、数字和 14 个符号全开时,字符集有 76 个字符,每个字符约 6.25 比特,16 位就是大约 100 比特。本生成器支持 4 到 128 位,另有 16 个按常见长度和规则设好的预设。

一个通用的起点

没有放之四海而皆准的密码。客人要在电视上输入的 Wi-Fi 密码、手机的 PIN 码、粘贴进配置文件的数据库密码,需求各不相同。本页是通用工具,长度和字符类型都由你决定。如果你已经知道密码要用在哪儿,下面的预设会给出合适的默认值,并说明这种场合的限制。

生成器有这些控件:

五步生成一个密码

  1. 拖动滑块,或者输入 4 到 128 之间的数字来设定长度。
  2. 按网站或设备接受的范围,打开或关闭各类字符。
  3. 如果这个密码有一天要念给别人听或者手抄,就打开“排除易混字符”。
  4. 点“再生成一个”,看结果下方的熵值;默认的 16 位显示 99.7 比特。
  5. 把密码直接复制进密码管理器或注册表单;网站不接受的话,再点一次生成。

熵值是怎么算的

这里的熵,指当前设置下能生成多少种等可能的密码,用 2 的幂来表示。如果一个密码是 2⁸⁰ 种可能之一,攻击者按顺序尝试,平均要猜 2⁷⁹ 次。公式很短:

熵(比特)= 长度 × log2(字符集大小)

每多允许一类字符,字符集就变大一些:

允许的字符 字符集大小 每个字符的比特数
只有数字 10 3.32
只有小写字母 26 4.70
小写字母和数字 36 5.17
大小写字母和数字 62 5.95
四类全开,去掉易混字符 70 6.13
四类全开 76 6.25

有两个细节让这个数字经得起推敲。第一,每个字符都是均匀随机抽取的,所以公式算出的是精确值,而不是对人类习惯的估计。第二,打开“每类至少出现一次”后,有些组合永远不会出现(比如全是小写字母的密码),所以页面显示的是一个略低、偏保守的值:只计算包含所有选中类型的那些密码。8 位且四类全开时,随机字符串里只有 47.5% 恰好四类都有,代价约 1.1 比特;到 20 位时,代价只剩约 0.1 比特。

熵只描述“猜”这一件事。密码被多个网站重复使用、输进了钓鱼网站、被粗心的网站明文保存,熵再高也救不了。每个账号一个不同的密码,交给密码管理器保管,能解决其中大部分问题。

按长度的预设

下面每一页都固定了长度(仍可修改),四类字符默认全开,并分别讲这个长度的熵、猜测所需时间,以及哪些标准或系统提到了这个长度。这些预设页目前只有英文正文,工具界面会显示中文。

预设 那一页讲什么
8 位 过去的最低要求,以及为什么 50 比特在快速哈希面前几分钟就被攻破
10 位 多两个字符带来什么,以及上限只有 10 位的系统
12 位 支付系统 PCI DSS 4.0 的最低要求
14 位 Windows 旧策略的上限和 LM 哈希的截断点
15 位 NIST 对单独使用的密码的最低要求
16 位 美国网络安全机构给公众的建议长度
20 位 从这里开始,暴力破解已经不是主要问题
24 位 给限制可用字符的网站留出余量
32 位 配置文件里的密钥,以及上限为 30 或 32 位的数据库
64 位 服务被要求至少接受的长度,以及 Wi-Fi 的十六进制密钥

按规则的预设

预设 规则
好记 三个首字母大写的英文单词,用连字符连接,再加两位数字
Wi-Fi 20 个用遥控器也好输入的字母和数字
PIN 码 6 位随机数字,可在 4 到 12 位之间调整,银行卡六位取款密码也适用
不含符号 16 位字母和数字,给不接受标点的网站
可拼读 六个“辅音 + 元音”音节加两位数字,方便念出来
易输入 小写字母和数字,每 4 个一组,用连字符隔开

如果你需要的是一个要背下来、而不是存起来的密码,试试密码短语生成器,或者用 Diceware(英文页面)掷骰子选词。想评估手上已有的密码,用密码强度检查(英文页面)。

多长才算够

要看密码会遭到哪种攻击。输错几次就锁定账号的网站,只能在线一次次地试。泄露的数据库、截获的 Wi-Fi 握手包、加密文件,则可以离线攻击,如果哈希算法很快,每秒能试几十亿次。现行的建议也反映了这一点:NIST 在 2025 年修订的标准里,要求单独使用的密码至少 15 个字符,同时启用了其他验证因素时才放宽到 8 个。对任何可能遭遇离线攻击的东西,16 个以上的随机字符是一个比较宽裕的底线。

密码存在哪里

密码由这个标签页里运行的 JavaScript 生成,不发给任何服务器,不存进浏览器,也不进历史记录。复制时,它会像其他文字一样进入剪贴板;有些系统和输入法会保留剪贴板历史,在公用电脑上用完记得清掉。刷新或关闭页面,一切都会丢弃。

实现细节

随机数来自 crypto.getRandomValues,也就是浏览器的密码学安全随机数生成器。把一个随机字节变成 76 个字符中的一个,需要小心:256 不是 76 的整数倍,直接取余数的话,前 28 个字符出现得会稍多一些。生成器改用拒绝采样:落在不均匀尾部的值直接丢掉重抽,这样每个字符的概率完全相同。想确认生成时什么都没发出去,可以在本页打开浏览器开发者工具查看,步骤见技术说明页。

常见问题

生成的密码比我自己想的好吗?

面对猜测攻击,是的。人习惯用固定套路,比如首字母大写、一个单词、一个年份、一个感叹号,破解工具会优先尝试这些套路。生成的密码没有套路可钻,这也是它的熵能精确计算的原因。

为什么打开“每类至少出现一次”后熵值变低了?

因为这条规则排除了所有缺少某一类字符的组合。可能的密码少了,比特数自然就少了。8 位时损失约 1 比特,16 位以上几乎可以忽略,所以网站要求混合字符时,放心打开它。

排除易混字符会让密码变弱吗?

字符集从 76 个缩到 70 个,每个字符少约 0.12 比特。16 位密码从约 100 比特降到约 98 比特。想补回来,多加一位就行。

网站最长能接受多长的密码?

没有统一的上限。NIST 要求服务至少允许 64 个字符,OWASP 验证标准的旧版本则让开发者拒绝超过 128 个字符的输入。有些系统的上限低得多,按长度的预设页会提到各个长度对应的限制。

为什么网站不接受我生成的密码?

通常是生成器无从知道的网站规则:长度上限、禁用某个符号,或者“必须以字母开头”之类的要求。调整长度或字符类型,再点一次生成,重来一次没有任何成本。

断网时能生成密码吗?

能。页面加载完以后,生成密码不需要联网,所有计算都在你的设备上进行。

资料来源

2026-10-11 核对。

最后更新: