高强度随机密码生成器

在浏览器中用 crypto.getRandomValues 生成高强度随机密码。可选择长度和字符集,并显示以比特计的精确熵值。

使用的字符
强103.4 位

每个密码都通过 crypto.getRandomValues 从 89 个字符组成的字符池中均匀随机抽取。在 16 个字符和所选规则下,共有 2^103.4 种可能的密码,即 103.4 位熵。

什么是 密码生成器?

此工具根据你选择的字符集(大写字母、小写字母、数字和符号)生成随机密码。每个字符都来自浏览器的密码学安全随机数生成器,页面还会显示该密码实际具有多少比特的熵。

如何使用 密码生成器

  1. 用滑块设置长度,或直接输入数字(4–128)。
  2. 勾选要使用的字符集,也可以勾选排除易混淆字符。
  3. 如果网站有要求,请保持开启每种选中的字符集至少包含一个字符。
  4. 点击重新生成获得新密码,点击复制把它放入剪贴板。

示例

输入
Length 16, uppercase + lowercase + digits + symbols, one of each set
输出
un1f?zGz#~v4Sr2n (103.4 bits)

输出是随机的,每次都会得到不同的密码。熵值对这些设置而言是精确的。

何时使用 密码生成器

每当你需要为账号、Wi-Fi 网络、数据库用户或 API 凭据生成将存放在密码管理器里的新密码时使用。如果你必须手动输入或记住密码,在强度相近的情况下,diceware 口令更容易处理。不要用它来检查已有的密码;那请使用密码强度检测器。

密码生成器 的工作原理

字符池是所选字符集的并集(26 个大写字母、26 个小写字母、10 个数字、27 个符号 !@#$%^&*()-_=+[]{};:,.<>/?~)。每个字符都用 crypto.getRandomValues 配合拒绝采样抽取,因此字符池中的每个字符概率完全相等(没有取模偏差)。当要求每个字符集都出现时,会重新生成整个密码,直到包含每个字符集,从而使结果在所有有效密码上保持均匀。显示的熵是精确可能密码数的 log2,通过对必选字符集做容斥原理计算得出。

常见用例

  • 为每个网站创建唯一的密码并存入密码管理器
  • 设置高强度的 Wi-Fi(WPA2/WPA3)密码
  • 为数据库或服务账号生成初始密码
  • 替换在数据泄露中出现过的密码

安全提示

请把生成的密码存入密码管理器,且绝不要在多个网站之间重复使用。剪贴板内容可能被其他应用读取,因此在共用电脑上粘贴后请清空剪贴板。

常见问题

密码应该多长?

四种字符集全开时,16 个字符约有 103 比特,远超任何离线攻击能暴力破解的范围。NIST SP 800-63B-4 要求单独使用的密码至少 15 个字符。

密码会发送到服务器吗?

不会。它由浏览器中的 JavaScript 生成,除非你把它复制到别处,否则不会离开本页面。

为什么要求包含每个字符集会略微降低熵?

要求每个字符集至少出现一个字符,会排除缺少某个字符集的密码,所以可能性略有减少。页面计算的是精确数值,而不是常见的 长度 × log2(字符池) 近似值。

排除易混淆字符有什么作用?

它会从字符池中去掉 0、O、1、l、I 和 |,使密码更便于阅读和手动输入,代价是熵略有下降,而显示的数值已经包含了这一点。

探索更多分类