HandyTools Hub

密码生成器

使用可自定义的选项生成安全的随机 password。

生成的密码

Strong

选项

16
8 128

字符类型

一个足够强且唯一的密码,仍然是大多数网络账号的第一道防线,而靠手自己编通常只会退回可预测的模式。这个免费密码生成器在你的浏览器里生成加密安全的随机密码——你生成的一切都不会离开设备。设定长度、选择字符类别,就可以按需生成任意多个彼此独立的密码。

使用方法

  1. 设定长度。 滑块覆盖 8 到 128 个字符;16 位是稳妥的默认值,32 位以上适合 API 密钥和主密码。
  2. 选择字符类别。 小写字母、大写字母、数字和符号都可以单独开关。四类全开时,每个字符的熵最大。
  3. 可选地排除相似字符。 需要由人手动输入时再打开,它会去掉 l、1、I、O、0 这类容易看混的字符。
  4. 生成并查看。 强度指示器会随设置变化实时评级,让你看到每一项改动的效果。
  5. 立刻复制到密码管理器。页面不会保存密码,刷新即清空。

实操示例

示例一 —— 邮箱账号。 一个 16 位、四类字符全开的密码是推荐基线。以任何现实速率做暴力破解都不可能猜中,而且既然由管理器粘贴,就完全不需要记忆或手输。

示例二 —— 要分享的 Wi-Fi 密码。 访客会照着卡片输入,所以长度取 20、关闭符号、开启「排除相似字符」,可以避免 l/I/1 和 O/0 混淆,把共享密码变成一通客服电话。20 位字母数字组合的熵依然足够。

示例三 —— API 签名密钥。 一个 48 位、全字符类别开启的字符串提供约 300 位熵,远超任何现实攻击所需,适合作为 webhook secret 或服务令牌。直接复制进密钥管理器,永远不要写进提交记录。

什么让密码变强

强度本质上是熵的问题:攻击者需要尝试多少种候选。熵随密码长度和字符池大小增长,但长度占主导。每增加一个字符,搜索空间就乘以字符池大小,而增加一个字符类别只会小幅提升单字符的贡献。一个从约 90 个符号中随机取出的 16 位密码约有 104 位熵;一个 8 位密码只有约 52 位,现代 GPU 就能穷举。

有两个习惯会在无声中毁掉原本很强的密码。第一个是复用——一次泄露就会波及所有共用该值的账号。第二个是可预测的变形,比如把 a 换成 @,或在词典单词后面加一个年份;破解工具会优先尝试这些变换,因为人人都这么改。随机生成同时绕开了两者:每个密码都唯一,且不含可被利用的模式。

随机性是如何生成的

生成器使用 crypto.getRandomValues(),即浏览器的加密安全随机数生成器。与为统计分布设计、内部状态一旦已知就可被预测的 Math.random() 不同,这个 API 从操作系统的熵源取样,适合用于机密。每个字符都从已启用的字符池中均匀选取,因此不会偏向某些字母或位置。

同样重要的是这个工具不做什么:它不保留历史、不写日志、不通过网络发送任何内容。密码只存在于你的浏览器标签页里,直到你复制它为止。

常见错误与边界情况

  • 在多个网站复用同一个密码。 破坏性最大的错误。用密码管理器,让每个账号都有自己的值。
  • 只追求复杂而忽略长度。 P@ssw0rd! 满足复杂度规则,却出现在每一份破解字典的靠前位置。更长的随机字符串胜过又短又「巧妙」的密码。
  • 把密码存在账号旁边。 键盘下的便签或桌面上的明文文件,会让生成器的作用完全归零。
  • 用手输而不是粘贴。 手动转录会引入错误,并诱使你使用更短、更好打的密码。能用管理器粘贴就用粘贴。
  • 忽略账号恢复。 开启双因素认证并保管好恢复码;如果重置邮箱已被攻破,再完美的密码也救不了账号。
  • 把长度设到最低。 8 位是为兼容性存在,不是为安全存在。把它当作你愿意接受的最低档。

功能特性

  • 通过 Web Crypto API 进行加密安全生成
  • 长度可在 8 到 128 个字符之间调整
  • 可分别开关小写字母、大写字母、数字和符号
  • 可排除视觉上相似的字符
  • 随设置变化实时显示强度
  • 100% 客户端运行:无服务器、无日志、无存储

使用场景

  • 账号安全: 为邮箱、银行和社交账号设置强且唯一的密码。
  • 密码管理器: 生成一条长主密码,并为新条目即时填充。
  • API 密钥与机密: 为服务和 webhook 生成无偏的随机令牌。
  • 临时访问: 为演示、共享或访客账号生成一次性密码。

相关工具

常见问题

密码应该设多长?

对重要账号来说,16 位是一个稳妥的默认值,12 位则是任何你在意的账号的合理下限。长度比符号种类更重要:一个从约 90 个字符中随机取出的 16 位密码,熵远高于一个用满各种字符类型的 8 位密码。每多一个字符,攻击者的搜索空间就成倍扩大,所以加长度几乎总是最划算的升级。

应该排除相似字符吗?

当密码需要由人来阅读或输入时——写在卡片上的 Wi-Fi 密码、电话里口述的共享账号——建议开启;它会去掉 l、1、I、O、0 这类容易抄错的字符。如果是密码管理器直接复制,则关闭它可以多出一点熵。

这里说的「加密安全」到底是什么意思?

生成器从浏览器的 Web Crypto API(crypto.getRandomValues)取随机数,这与 TLS 密钥用的是同一类来源。它不是 Math.random 那样的可预测伪随机函数,攻击者无法根据已知种子复现序列。当然,密码最终的安全程度还取决于你把它存在哪里。

生成器会保留历史记录或日志吗?

不会。生成完全在你的浏览器里用 JavaScript 完成,不传输、不记录、也不缓存。密码只存在于页面中,直到你复制它,刷新页面即清空。因此这个工具不仅适合一次性账号,也适合真实账号。

一个长密码就够了,还是每个网站都要单独的?

每个网站各用一个。复用是最大的密码风险:一旦某个服务被攻破,攻击者会把泄露的邮箱和密码组合拿去逐个尝试其他网站(撞库)。随机生成让每个值彼此独立,一次泄露只影响那一个账号。

可以把生成的密码当作 API 密钥或 secret 吗?

可以——32 位以上的随机字符串很适合作为客户端密钥、签名密钥或测试令牌。对于长期有效的密钥,应存入密钥管理器而不是源码仓库,若可能已泄露就要轮换。生成器的输出是无偏随机数据,正是密钥材料应有的样子。

由 HandyTools Hub 团队审校 · 最后更新