安全密码生成器
本地生成高强度随机密码,自定义长度和字符规则,数据不离开浏览器
批量生成
什么是密码生成器?
密码生成器是一款在浏览器端运行的安全密码创建工具,帮助开发者和个人用户生成高强度、不可预测的随机密码。在密码泄露事件频发的今天,使用弱密码或重复使用相同密码是最大的安全隐患之一。据 Verizon 数据泄露调查报告显示,超过 80% 的数据泄露事件与弱密码或被盗密码有关。一个强密码应该满足以下条件:足够长(至少 12 位)、包含多种字符类型(大小写字母、数字、特殊符号)、完全随机且不可预测。本工具使用浏览器提供的 crypto.getRandomValues() 密码学安全随机数生成器(CSPRNG),确保生成的密码具有足够的熵值,无法被暴力破解或字典攻击。所有密码均在本地浏览器中生成,不会传输到任何服务器。
如何使用密码生成器
- 步骤一:设置密码长度 — 通过滑块选择密码长度,推荐至少 16 位用于重要账户,8-12 位用于一般账户。密码每增加一位,破解难度呈指数增长。
- 步骤二:选择字符类型 — 勾选需要包含的字符类型:大写字母(A-Z)、小写字母(a-z)、数字(0-9)、特殊符号(!@#$%^&*)。建议至少启用三种类型以增加密码空间。
- 步骤三:生成并安全保存 — 点击生成按钮获取密码,使用密码强度指示器评估安全等级。建议将生成的密码保存到密码管理器(如 1Password、Bitwarden)中,避免明文记录。
常见使用场景
场景一:创建新账户密码
注册新网站或应用账户时,使用密码生成器创建唯一的高强度密码。每个账户使用不同密码,即使某个网站发生数据泄露,其他账户也不会受到影响,实现"密码隔离"的安全策略。
场景二:数据库连接凭据
为 MySQL、Redis、MongoDB 等数据库创建管理员密码时,需要生成包含特殊字符的强密码。这些密码通常存储在环境变量或配置文件中,使用生成器确保密码的随机性和复杂度。
场景三:API 密钥和 Token 生成
生成 API 密钥、OAuth Token、Webhook Secret 等系统凭据时,需要高强度的随机字符串。密码生成器的随机性保证可满足这类安全需求,同时支持自定义长度和字符集。
技术原理
密码安全的核心在于随机数的质量。Math.random() 使用线性同余生成器,是可预测的伪随机数,不适合安全场景。本工具使用 crypto.getRandomValues()(Web Crypto API),基于操作系统的密码学安全随机源(Linux 的 /dev/urandom、Windows 的 BCryptGenRandom),生成的随机数具有不可预测性。密码熵(entropy)的计算公式为 log₂(字符集大小^密码长度),例如使用 94 种字符的 16 位密码,熵值为 16×log₂(94) ≈ 105 位,远超暴力破解的可行范围。
// 安全密码生成核心代码
function generatePassword(length, charSets) {
const charset = charSets.join('');
const array = new Uint32Array(length);
crypto.getRandomValues(array);
return Array.from(array, v => charset[v % charset.length]).join('');
}
// 94字符集,16位长度 → 约105位熵
最佳实践与注意事项
- 重要账户密码长度至少 16 位,启用所有字符类型。密码熵应大于 80 位。
- 生成的密码务必保存到密码管理器中,不要写在便签或明文文件里。
- 定期更换关键账户密码(建议每 90 天),特别是管理员账户和数据库密码。
- 避免在多个网站使用相同密码,使用密码管理器实现"一站一密"策略。
常见问题
Q:Math.random() 和 crypto.getRandomValues() 有什么区别?
A>Math.random() 使用 PRNG(伪随机数生成器),种子可预测,不适合安全场景。crypto.getRandomValues() 使用 CSPRNG(密码学安全伪随机数生成器),基于操作系统提供的真随机源,生成的随机数不可预测,适合密码、密钥等安全敏感场景。
Q:密码应该多长才安全?
A>根据 NIST 2024 指南:普通账户至少 8 位,重要账户建议 16 位以上,管理员账户建议 20 位以上。一个 16 位的全字符集密码,即使使用当前最快的 GPU,暴力破解也需要数百万年。
Q:某些网站对密码有特殊字符限制怎么办?
A>部分老旧系统不支持特殊字符或限制密码长度。建议生成两个版本:一个完整密码用于密码管理器存储,一个符合目标网站限制的简化版本。同时向该网站反馈应升级密码策略。
Q:如何验证生成的密码是否安全?
A>使用 Have I Been Pwned 的 Passwords API 检查密码是否出现在已知泄露数据库中。本工具内置的密码强度指示器也会根据熵值、字符多样性和常见模式来评估密码强度。
Q:这个工具生成的密码会被记录吗?
A>完全不会。所有密码在浏览器本地通过 JavaScript 生成,不会发送到任何服务器,不会存储在浏览器的 localStorage 中。关闭页面后,生成的密码即消失。你的密码安全完全由你自己掌控。