一个强大且唯一的密码是任何在线账户所能获得的最廉价的防御手段——而您往往在不太方便的时候才急需一个:设置新的工作登录、网银强制要求重置、刚刚拆封的全新路由器,或者在您终于决定改用密码管理器(password manager)时。这个免费的强密码生成器只需点击一下,就能创建出一个完全随机的密码。将“长度”设置为您需要的大小,挑选要包含的字符类型——大写和小写字母、数字、基本符号(%$#@!?&)以及复杂符号(.,;[]()^-_=+{}:<>|)——然后按下“生成”。
因为安全性是核心目的,所以该生成器建立在 Web Crypto API(crypto.getRandomValues)之上,它所提取的数值来自同一个受加密学保护的系统级随机源,这也是 TLS 和其他对安全要求极高的操作所依赖的基础。与基于 Math.random() 或其他可预测的伪随机函数构建的生成器不同,它的设计确保了攻击者即使看到了一个结果,也无法推断出下一个密码是什么。整个生成过程完全在您的设备上进行:密码绝不会发送到服务器,绝不会被记录,我们也绝对看不到——没有任何数据会被中途拦截,也没有任何东西供我们存储。
丰富的选项使其能够轻松适应任何网站的密码策略。每个生成的密码都保证包含您所选的每种字符类型至少一个——因此像“必须包含一个大写字母和一个数字”这样的要求会自动得到满足——并且“确保每种字符类型数量大致相等”默认处于开启状态,这样就不会有单一类别的字符占据压倒性的比例。为了获得最大强度,您可以开启符号;对于拒绝符号的旧版系统,则可以将其关闭。“排除易混淆字符”开关会移除人们最常看错的字符(Il1O0o)。
需要多个密码,或者遇到了不同寻常的策略要求?您可以设置“生成数量”以一次性创建一整份列表——最多可达 100 个密码,例如在为团队创建账户时——而一旦数量大于 1,“结果格式”将决定它们的拼排方式:“换行”、“以空格分隔”或“以逗号分隔”。其余功能都在“高级选项”下。关闭“排除同一密码中的重复字符”即可允许同一个字符出现多次。虽然本生成器无法直接包含中文字符,但它支持了其他 35 种语言的特殊字母——从乌克兰语、希腊语和塞尔维亚语,到波兰语、土耳其语和越南语。为了获得完全的控制权,“字符集(每行一个)”允许您定义自己的字符库:每一行都会成为一个独立的字符类别,供生成器从中随机抽取。
为什么选择这个密码生成器?
- 纯浏览器端生成:密码在您的设备上创建,绝不发送到任何地方
- Web Crypto API 随机性——具备加密学级别的安全性,而非 Math.random()
- 免费且无限制:随心所欲地生成无数个密码,无需注册
- 类别保证:所有选定的字符类型都会必定出现
- 自定义字符集,以应对各种不同寻常的密码策略
- 熵值估算:以比特(bits)为单位查看每个密码的强度
- 易混淆字符保护功能,避免视觉上的误读
- 其他语言字母:可以混入来自 35 种语言的本地字母
- 批量模式:一键创建一整份密码列表
这种随机性是如何产生的?您的操作系统会持续收集熵(entropy)——也就是来自硬件事件的不可预测的噪声——并将其输入到一个安全加密的随机数生成器中。当您按下“生成”时,页面的 JavaScript 会通过 crypto.getRandomValues 向浏览器请求随机值,将它们映射到您选择的字符类别上,检查每种类别的代表是否都存在,然后组装出密码。这里没有可供猜测的种子(seed),没有可让专门的密码破解硬件用来重播的算法捷径,任何步骤中也都没有网络请求——整个流程只在您的设备上运行。
在结果下方,您会看到以比特为单位的熵值估算——这是衡量密码强度的标准:对于日常账户来说 60+ 比特是合理的,80+ 算得上强大,而 100+ 则已超出了当今硬件进行暴力破解(brute force)的实际能力范围。养成两个习惯比什么都重要。第一,长度胜过复杂性:对于任何重要的账户,请使用 16 个以上字符——每增加一个字符,攻击者的破解工作量就会成倍增长,速度远超再增加一种符号类别。第二,唯一性:当某个网站遭受数据泄露(data breach)时,泄露的登录凭据会立刻被拿到其他服务上尝试——这被称为撞库(credential stuffing)攻击——因此,即使只是重复使用了一个密码,也可能让一次单一的泄露演变成全面的账户劫持。为每个账户生成一个单独的密码,将它们保存在密码管理器中,并在所有提供该功能的地方启用两步验证(2FA)。另外,如果一个真正随机的密码包含了一个重复的字符或者一小段看似可读的片段,也不要感到惊讶——真正的随机性总是会产生这样的序列,并且它们丝毫不会让密码变得脆弱。