密码生成器
生成强随机密码。使用 Web Crypto API —— 与浏览器生成 TLS 密钥所用的随机源相同。
- 拖动「长度」滑块选择字符数(4 到 128)。
- 勾选要包含的字符类别 —— 大写、小写、数字、符号。
- 如需跳过 I l 1 O 0,勾选「排除相似字符」。
- 想换一个就点「生成」(每次改动也会自动重新生成)。
- 点「复制」把密码放到剪贴板,再粘贴到你的密码管理器。
它能做什么?
本生成器从你选定的字符集合中独立抽取每一个字符,使用浏览器的 Web Crypto API 作为随机源。这就是浏览器生成 TLS 会话密钥所用的加密级安全随机源 —— 不是大多数临时生成器依赖的、存在偏差的 Math.random()。通过拒绝采样(rejection sampling)保证字母集中每个符号被抽中的概率相等,因此熵估计真正成立。
示例
长度 20,四类字符全开,允许相似字符:
G7#vQ2xP!mK9nR4sT&bL 长度 24,仅字母和数字(针对拒绝符号的网站):
k3Hq8RmZ5nPv2WyTb6JsXfLd 使用生成密码时的常见坑
- 网站拒绝某些符号。 有些网站会悄悄剥离或拒绝 <、>、引号或空格。如果密码不被接受,关闭「符号」类别并把长度提到 24 以上来补偿。
- 复制粘贴带入了末尾空格。 在某些操作系统上,双击选择会多抓一个空格。如果登录失败,先粘贴到纯文本框验证长度是否一致。
- 为了「方便」而太短。 8 位密码大约只有 50 比特熵 —— 在现代 GPU 上几小时就能离线破解。常用账号至少 16 位,用于静态数据加密的至少 20 位。
- 多个账号用同一个密码。 即使密码很强,只要某个站点泄露,其它复用账号也会一同被攻破。每个账号生成唯一密码并存入密码管理器。
- 忘了密码轮换策略。 有些企业系统每 90 天强制更改一次密码。把生成的密码保存到管理器,网站要求重新输入时就能确认完全一致。
- 截图或剪贴板历史。 macOS、Windows 以及若干剪贴板工具会保留历史。存好密码后,清空剪贴板或复制其他内容覆盖。
常见问题
这个密码生成器是加密级安全的吗?
是的。随机性来自 crypto.getRandomValues(),即支撑 TLS 会话密钥的浏览器 Web Crypto API。它不是 Math.random() —— 后者是可预测的伪随机生成器,不适合生成秘密。每个字符都通过拒绝采样抽取,保证字母集中每个符号的出现概率相等。
我的密码应该多长?
对于有速率限制的在线账号,16 位混合字符就足够。用于离线保护加密数据(密码管理器、磁盘加密、备份)的,使用 20 位以上。四类字符全开的 20 位密码约有 130 比特熵,已超出蛮力攻击可及范围。
你们会保存这个工具生成的密码吗?
不会。我们不会保存你在这里生成的密码。每个密码只在输入框中显示一次,刷新或关闭标签页后就消失。没有写入存储,我们这边也没有日志。你可以在浏览器开发者工具中自行核实,以获得额外的安心。
什么是熵?我需要多少比特?
熵以比特度量不可预测性。每多一比特,攻击者需要的猜测次数翻倍。60 比特足以抵挡一般的离线攻击,80 比特可挡下有耐心的攻击者,128 比特是现代强密钥的标准。90 个符号构成的 20 位密码约为 130 比特。
我应该用一段口令短语(passphrase)代替随机密码吗?
由 5 到 6 个随机词典词组成的口令短语更容易输入和记忆,熵也相近(约 65 到 80 比特)。但对于你存在管理器里、几乎不用手敲的密码来说,相同强度下随机字符密码更短。本工具生成的是后者。
为什么有些网站拒绝我生成密码里的符号?
有些网站的输入处理粗糙,会拒绝 <、>、引号或空格等符号。如果密码被拒,取消勾选「符号」,改用更长的字母加数字密码。长度可以弥补更小字母表带来的熵损失。