密码生成器
即时生成强随机密码。可自定义长度和字符集,加密安全。免费在线工具。
- 在浏览器中处理
- 数据不离开你的设备
- 免费 · 无需注册
用微信扫描以下二维码即可分享
示例、说明与常见问题 带实际输出的示例、与同类工具的差别,以及常见问题。
强度数字怎么算
强度条不判断密码看起来复杂不复杂。每个字符都从选中的字符池里均匀抽取,所以可能的密码数是「字符池大小的长度次方」,熵(比特)就是 长度 × log2(字符池大小)。档位是固定的:低于 40 比特为「很弱」,40–59 为「弱」,60–79 为「一般」,80–99 为「强」,100 及以上为「很强」。强度文字后面的单位在各语言页面上都写作 bits。
| 设置 | 字符池 | 长度 | 强度条显示 |
|---|---|---|---|
| 四类全选(默认) | 88 | 20 | 很强 (129 bits) |
| 四类全选,排除易混淆字符 | 83 | 16 | 很强 (102 bits) |
| 大写 + 小写 + 数字 | 62 | 12 | 一般 (71 bits) |
| 小写 + 数字 | 36 | 12 | 一般 (62 bits) |
| 四类全选 | 88 | 8 | 弱 (52 bits) |
同样是 12 位,字符池从 36 加到 62,只多了约 9 比特;而在 62 个字符里每多 1 位,就多约 6 比特。想让强度条往上走,加长度比加字符种类有效得多。表里的数字与你点「生成」时强度条显示的一致;生成的密码本身每次都不同。
示例:按阿里云 RAM 的密码策略生成
阿里云访问控制(RAM)的「设置RAM用户密码策略」文档写明:密码长度范围为 832 个字符,最小长度可在 832 之间设置,最大长度固定为 32 位;「密码要包含的字符类型」可选大写字母、小写字母、数字和符号,建议至少勾选 3 项。
假设管理员把最小长度设为 16,并要求四类字符都包含。在本工具里保持四类全选,长度设为 20 或 32(不要超过 32,否则会超出 RAM 的上限):
- 长度 20:强度条显示
很强 (129 bits)。 - 长度 32:强度条显示
很强 (207 bits),正好是 RAM 允许的最长密码。
但工具不保证四类各出现一次。按字符池大小算,长度 16 时约 15.6% 的密码至少缺一类字符,长度 20 时约 9.2%,长度 32 时约 2.1%。缺的几乎总是数字,因为数字只有 10 个,是四类里最少的。控制台提示不符合策略时,再点一次「生成」即可;直接用 32 位也能让这种情况少很多。
网站不允许用符号时
有些系统只接受字母和数字。这时取消「符号」,字符池从 88 个变成 62 个,每位的熵从约 6.46 比特降到约 5.95 比特,把长度调长几位就能补回来:
- 大写 + 小写 + 数字,长度 16:
强 (95 bits)。 - 大写 + 小写 + 数字,长度 20:
很强 (119 bits),比四类全选的 16 位(约 103 比特)还高。
限制
- 长度 4–128。超出范围的值按 4 或 128 处理;填 0 或留空时按 20 处理。
- 不保证每类字符都出现。字符是独立抽取的,密码可能没有数字或符号;要求「必须包含」的网站会拒绝它,重新生成即可。
- 符号固定为 26 个 ASCII 符号。不能自定义符号,也不能单独去掉某个符号。
- 只生成字符密码。不生成由单词组成的口令短语(Diceware 一类)。
- bcrypt 只取前 72 字节。如果网站用 bcrypt 保存密码,超过 72 个字符的部分不起作用。要生成 bcrypt 哈希,可用 Bcrypt 加密与校验。
- 不保存任何结果。工具不把结果写入任何存储,关闭标签页后密码就没有了。离开前先存进密码管理器。
密码安全建议
- 每个账户使用不同的密码。一个网站泄露后,别人会拿同一组账号密码去试其他网站,用密码管理器才能做到每个都不同。
- 优先加长度,而不是加字符种类,原因见上面的表。
- 无论密码多强,能开两步验证的地方都打开。2FA 验证码生成器(TOTP)展示了验证器应用里 6 位验证码的算法。
- 不要在密码里用生日、姓名、手机号等个人信息,哪怕只用一部分。
FAQ
生成的密码会被保存或发送吗?
不会。密码在浏览器里用 Web Crypto API 生成,不发送到任何服务器,也不写入浏览器存储。本页不加载 Google Analytics 和 AdSense。关闭标签页后,密码就无法找回。
生成方式在密码学上安全吗?
安全。每个字符都取自 window.crypto.getRandomValues(),这是浏览器提供的密码学安全随机源。可能造成取模偏差、让部分字符略常出现的 32 位随机值会被丢弃并重新抽取,所以字符池里每个字符的概率相同。
密码长度应该设多少?
NIST SP 800-63B 要求:密码作为唯一认证因素时至少 15 个字符,作为多因素登录的一部分时至少 8 个字符。用默认的 88 个字符,16 位约 103 比特,20 位约 129 比特。密码交给密码管理器保存,就不用担心记不住长密码。
网站提示密码缺少数字或符号,为什么?
每个字符都是从选中的字符集里独立抽取的,工具不会强制每类各出现一次。四类全选、长度 20 时,约 9% 的密码里没有数字。再点一次「生成」,或者把长度调长。
包含哪些符号?
26 个:! @ # $ % ^ & * ( ) - _ = + [ ] { } | ; : , . < > ?。不会出现引号、反斜杠、斜杠、反引号、波浪号和空格,粘贴进 shell 命令、JSON 和配置文件时不必转义。