密码生成器

在线随机生成高强度密码,可调长度与字符类型,实时给出强度评分与破解耗时估算,全程在你自己的浏览器里完成


生成的密码:
点「生成密码」按钮开始

强度:等待生成

密码长度--
可用字符数--
信息熵--
离线爆破耗时估算--

历史记录

历史记录只保存在你这台设备的浏览器里,最多保留最近 20 条。点击密码即可复制,不需要的可以单条删除或一键清空。

# 生成时间 密码(点击复制) 操作

还没有生成记录。生成的密码会自动出现在这里,换一台设备或清理浏览器数据后记录会消失。

在线密码生成器怎么用

  1. 拖长度滑块:默认 16 位,范围 6 到 64 位。注册普通网站用 16 位足够,遇到只允许 8 到 20 位的老系统,就把长度调到它接受的上限。
  2. 勾选字符类型:小写、大写、数字、符号四类默认全开。有些银行的密码框只收数字,那就只留数字,工具会按你选的类型重新计算强度。
  3. 排除易混淆字符:需要把密码抄在纸上或念给别人听时勾上,会去掉 0、O、l、I、1、| 这些长得像的字符。
  4. 点生成:右侧立刻出结果,同时给出强度等级和破解耗时估算。不满意就再点一次,每次结果都不一样。
  5. 复制保存:点「复制密码」粘贴到注册表单,或者直接存进密码管理器。生成的密码会同步进下方的历史记录。

整个生成过程在浏览器本地完成,页面不会把密码发到任何服务器。你可以断网后再点生成,功能照常可用——这一点可以用浏览器的开发者工具在 Network 面板里验证。

密码强度是怎么算出来的

强度不是拍脑袋给的星级,而是算出密码的信息熵,单位是比特(bit)。公式为:熵 = 密码长度 × log₂(可用字符数)。 它衡量的是「攻击者平均要试多少次才能猜中」,每多 1 比特,尝试次数翻倍。

密码构成可用字符数离线爆破耗时
8 位纯数字1026.6 bit不到 1 秒
8 位小写 + 数字3641.4 bit约 2 分钟
8 位大小写 + 数字6247.6 bit约 3 小时
8 位四类全开8351.0 bit约 1 天
12 位四类全开8376.5 bit约 17 万年
16 位四类全开83102.0 bit远超宇宙年龄

表里「四类全开」的字符数是 83 而不是常见的 94,因为本工具的符号集挑了 21 个最通用的符号, 刻意避开了引号、反斜杠、空格和飘号——它们在某些系统的输入框、配置文件或命令行里会引发转义麻烦。 如果按完整 94 个可打印字符计算,同样的长度还会再高一点点。

上表的耗时按每秒 100 亿次的离线破解速度估算,大致相当于几块高端显卡跑未加盐的快速哈希。 这是攻击者拿到网站数据库后的场景,也是本工具估算的基准。真实情况里,用 bcrypt、Argon2 这类慢哈希并加了盐的系统, 同样的密码要多花几万倍时间,安全性还会再上一个台阶。

另一种场景是在线爆破,也就是对着登录框反复试密码。网站的限流和锁定策略通常把它压到每秒几次, 这种情况下哪怕只有 40 bit 的密码也很难撞开。所以真正危险的不是有人猜你的密码,而是网站数据库泄露后被离线批量破解—— 这也是为什么「一个网站一个密码」比「把密码设得再复杂」更重要。

长度比复杂度更管用

看上面那张表能发现一件事:字符集从 10 个扩到 94 个(接近 10 倍),熵只增加了约 2 倍; 而长度从 8 位加到 16 位(2 倍),熵也翻了 2 倍。字符种类带来的增长是对数级的,长度带来的增长是线性的, 所以把密码加长,比往里面塞更多符号划算得多

这也解释了为什么 P@ssw0rdAbc123!@# 这类「看起来很复杂」的密码其实不堪一击。 它们只是把字典词做了固定替换,a 换成 @、o 换成 0、结尾补个感叹号,这些规则早被写进攻击字典, 破解工具会优先尝试。机器随机生成的 16 位字符串没有任何模式,哪怕看起来没有感叹号那么"有安全感",实际强度高出几个数量级。

另外几个该避开的套路:用姓名、生日、手机号、公司名拼密码,按键盘顺序走(qwerty、1qaz2wsx), 以及所有网站共用同一套密码。最后一条最危险——只要其中一个小论坛拖库,你所有的账号都会被连带爆破。

关于随机数:为什么不用 Math.random()

本工具用的是浏览器内置的 crypto.getRandomValues(),它读取操作系统的熵池(鼠标移动、键盘时序、硬件噪声等), 属于密码学安全随机数发生器(CSPRNG),无法根据前面输出的结果预测下一位

Math.random() 是普通伪随机数发生器,内部状态有限且算法公开,只要拿到连续若干个输出值, 就能反推出内部状态并预测后续所有结果。用它生成验证码、会话令牌、密码,等于把钥匙和锁一起交给别人。 这个区别平时看不出来,但一旦被针对性攻击,就是灾难性的。

工具里还做了一个容易被忽略的处理:消除取模偏差。 如果直接用随机数除以字符集大小取余数,当字符集大小不能整除随机数范围时,靠前的字符出现概率会略高。 这里用的是拒绝采样——落在不完整区间的值直接丢弃重新生成,保证每个字符被选中的概率严格相等。

密码生成之后,还该做什么

密码生成器常见问题

生成的密码会被上传到服务器吗?

不会。密码在你的浏览器里用 Web Crypto 接口现场生成,页面不发送任何网络请求,历史记录只写入你设备的本地存储,网站运营方和其他用户都看不到。你可以断网后刷新页面再试,功能完全正常。

密码设多长才安全?

包含大小写字母、数字和符号时,12 位就足以挡住离线暴力破解,16 位以上属于冗余。如果网站限制了长度,优先把长度用满,再考虑加符号——长度带来的强度增长是线性的,符号带来的增长是对数的。

反过来,如果网站只允许 6 位(比如某些银行的支付密码),那它通常会配合错误次数锁定和短信验证,安全性靠的是机制而不是密码本身。

为什么不建议自己想一个复杂密码?

人脑构造的密码看似复杂,实际都有模式:首字母大写、结尾加数字加感叹号、用名字加生日。这些规则早就在攻击字典里,破解工具会优先尝试。机器随机生成的字符串没有规律可循,攻击者也只能老老实实穷举。

有些网站不接受符号,怎么办?

把「符号」那一项取消勾选,只保留字母和数字,重新生成即可,强度会按新的字符集重新计算。本工具默认使用的符号集避开了引号、反斜杠和空格,就是为了减少在配置文件、命令行和 URL 里需要转义的麻烦,但仍有少数系统的输入框会做额外限制。

历史记录会一直留在电脑上吗?

历史记录保存在浏览器的本地存储(localStorage)里,最多 20 条,超出后自动丢弃最旧的。可以随时点「清空历史记录」,或单独删掉某一条。清理浏览器数据、更换浏览器、换设备或使用无痕模式时,记录都不会保留。

需要说明的是,共用电脑时别人打开同一个浏览器也能看到这些记录。在公共设备上使用完,记得清空。

可以用它生成 Wi-Fi 密码或服务器 root 密码吗?

可以,而且推荐这么做。这类密码的使用周期长、一旦泄露影响范围大,用随机生成的长密码比自己想的要稳妥得多。生成后记得同时保存到一个可靠的地方——路由器密码尤其容易在重置后丢失。