高强度随机密码生成器
在浏览器中用 crypto.getRandomValues 生成高强度随机密码。可选择长度和字符集,并显示以比特计的精确熵值。
每个密码都通过 crypto.getRandomValues 从 89 个字符组成的字符池中均匀随机抽取。在 16 个字符和所选规则下,共有 2^103.4 种可能的密码,即 103.4 位熵。
什么是 密码生成器?
此工具根据你选择的字符集(大写字母、小写字母、数字和符号)生成随机密码。每个字符都来自浏览器的密码学安全随机数生成器,页面还会显示该密码实际具有多少比特的熵。
如何使用 密码生成器
- 用滑块设置长度,或直接输入数字(4–128)。
- 勾选要使用的字符集,也可以勾选排除易混淆字符。
- 如果网站有要求,请保持开启每种选中的字符集至少包含一个字符。
- 点击重新生成获得新密码,点击复制把它放入剪贴板。
示例
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 和 |,使密码更便于阅读和手动输入,代价是熵略有下降,而显示的数值已经包含了这一点。