随机密码
按字符集与长度生成,拒绝采样消除偏置,可排除易混字符。
字符池只由你勾选的字符类拼成,每个字符都是独立取的,所以熵 = 长度 × log2(池容量),页面按这条公式给出具体数字。取随机数用的是拒绝采样而不是取模:先把接受范围截到容量的整数倍,落在尾巴上的读数整轮丢弃重取,剩下的每个值概率严格相等。每条还会从各启用的字符类里强制取至少一个再整体洗牌,以满足「必须含数字和符号」这类表单要求。
输出的破解时长只是数量级估计,不假装精确。生成、提示、下载全在浏览器本地完成:不联网、不上传、不写 cookie,也没有任何「强度评分」把你的密码发到远端。
随机密码怎么用
- 池子里有多少候选:字符池只由你勾选的字符类拼成:小写 26、大写 26、数字 10、符号 31,四项全开是 93 个候选。
- 排除易混字符去掉的是哪些:打开「排除易混字符」后,字母数字里去掉 i l 1 I O 0(小写 L、大写 i 与数字 1 三者在多数字体里难以区分,0 与大写 O 同理),符号里再去掉成对括号、引号与反引号、逗号分号冒号点斜杠这类既容易看错、又要在命令行和 JSON 里额外转义的字符,只留 ! @ # $ % ^ & * + - = ? _ 这些好认好打的。
- 先给长度再给字符集:长度是主要因素:四项全开时 12 位约 78 位熵、16 位约 105 位、24 位约 157 位。需要过「必须含大写和符号」的表单时保持默认的四类全开,每条都会自动含齐。
- 按输入场景开关易混字符:密码要人手抄、电话里念、或者常在手终端里敲,就打开「排除易混字符」;只由密码管理器填充、一辈子不手打的场景关掉它,池容量更大、同长度下熵更高。
- 批量与保存:条数最多 200,点「重新生成」换一批,右下角「下载 .txt」把当前列表存成文件;建议存进密码管理器而不是明文文本,用完删掉导出文件。
常见问题
为什么用拒绝采样而不是取模?
一个字节是 0–255,而 256 通常不能被池容量整除(93 个字符时 256 = 2×93 + 82),直接取模会让前 82 个字符各多出这一档概率,出现得明显更频繁。
那个「破解要 10 的多少次方年」是怎么算的,可信吗?
算法是:平均要试半个密钥空间,即 2^(熵−1) 次尝试,除以每秒 10^10 次(约一台多卡 GPU 跑无盐快速哈希的吞吐),再换算成秒或年,只报 10 的几次方这个量级。它假设攻击者已经拿到密码库、能离线狂猜、而且哈希是快速无盐的。现实中这两条多半都不成立:网站有登录频率限制、锁定和风险检测,在线猜测慢到以天计;服务端如果用的是 bcrypt、scrypt、Argon2 这类内存/时间硬化的慢哈希并加了独立盐,同一秒内的尝试数会掉到几个数量级以下。所以这个数字用来比较「长度和字符集谁贡献更大」有意义,用来给你某个具体账号定安全等级没意义。
强度到底取决于什么?为什么 16 位随机密码还可能不够?
取决于用在哪里、以及它被泄露的方式。三点最要紧:一,是否重用——同一强密码在多个站点使用,任何一处脱库就等于全部失守,这条比符号数量重要得多;二,认证通道的防护——密码管理器主密码、邮箱、SSO、数据库这类「第一环」一旦被拿,后面的长密码形同虚设;三,是否需要人工输入——需要手打或口述的密码,长度才是关键,易混字符带来的错误率会逼人把密码改短。所以推荐做法是:机器用的凭据交给本工具生成的随机串(并且一址一号),人脑记的那一条用更长的口令短语。
「至少含一个大写、一个数字、一个符号」会不会让密码变弱?
有极小的影响,但方向是对的。强制每类至少一个,等于把候选集合限制成「不含违禁配比」的那部分,实际熵比长度 × log2(池容量) 略低(这里不到几个位),因为字符的配比和位置少了一点自由度。代价可以忽略,收益是每条都能通过「必须混合字符类」的注册表单,不会生成出来还要重摇。真正该避免的是反过来过度约束:把「必须含符号、必须不含易混字符、长度必须 8–16、不许重复字符」全叠上,池子被切掉一大块,熵才是真的掉下去了——这也是能放宽就放宽的约束、别自己给自己加规则的原因。
对应功能编号 #75无需安装,手机端同样可用按 Ctrl + K 换工具