随机密码生成
生成器所有处理都在浏览器本地完成,数据不上传服务器
熵 = 长度 × log2(字符集大小),前提是每个字符都独立均匀随机。
密码的强度可以算出来:熵 = 长度 × log2(字符集大小),单位是比特 —— n 比特意味着攻击者平均要试 2^(n-1) 次。这个页面把比特数直接显示出来,而不是只给一个「强」字,因为数字可比较、可推理:把长度从 8 加到 16、或把字符集从 26 个扩到 86 个,你马上能看到熵涨了多少。生成端有两条硬性保证:随机数只取自浏览器的 crypto.getRandomValues,并且每个勾选的字符类至少出现一次、最后再打乱顺序。
功能
- 长度 4–128 可调,小写 / 大写 / 数字 / 符号四类字符集任选
- 实时显示熵(bit):长度 × log2(字符集大小),随选项即时更新
- 保证每个勾选的字符类至少出现一次,最后统一打乱 —— 不会出现「前几位永远是同一类」的规律
- 可排除易混淆字符 0 O 1 l I,适合需要手抄或电话口述的场景(熵按排除后的字符集算,不会虚高)
- 一次最多 50 条,批量结果互不相同,可逐条复制或全部复制
- 命中常见弱密码表时逐条标注出来,不因为「反正是随机生成的」就略过
使用方法
- 设置长度(建议 16 以上)
- 勾选要用的字符集,至少留一组
- 需要手抄时勾上「排除易混淆字符」
- 按「重新生成」换一批,点条目右侧「复制」取走
常见问题
- 熵是什么,多少才算够?
- 熵是「攻击者平均要试多少次」的度量,单位是比特:n 比特意味着平均 2^(n-1) 次尝试。经验上 40 比特以下用一块普通显卡几个小时就能撞开;60 比特以上足以抵挡在线爆破;80 比特以上按现有算力基本够不着。四类字符集、长度 16 时约 105 比特 —— 页面上显示的就是这个数,它能直接比较,而「强」这个字不能。
- 生成的密码会被记录或上传吗?
- 不会。随机数来自浏览器的 crypto.getRandomValues(加密安全的随机源),生成与显示都只在本机内存里进行,页面不发送任何请求。刷新页面列表就没了 —— 这也意味着它不会出现在任何服务器日志里。
- 为什么不能用 Math.random 生成密码?
- 它不是加密安全的随机源:内部状态可以从几百个输出里反推出来,之后每一条「随机」密码都变成可预测的。更麻烦的是这个错误不会有任何报错,生成器看起来完全正常。这个工具(以及本站所有需要随机的工具)都只用 crypto.getRandomValues。
- 一次生成 50 条会不会有重复?
- 不会。同一批里出现过的密码会被剔除后重新生成。以当前的取值范围(长度至少 4 位、字符集最少 8 个字符)凑出 50 条互不相同毫无压力。
- 生成之后该怎么用?
- 一个账号一条,不要复用;交给密码管理器保存,别记在聊天记录里;站点不接受符号时就取消符号、把长度加长 —— 长度比符号更值钱。另外,如果某个站点有长度上限(比如只准 12 位),就按上限生成并优先保证长度。