密码生成器 - 强随机密码和密码短语 在线
生成强大安全的随机密码和易记密码短语。自定义长度、字符和复杂度 — 100%客户端处理,不存储。
密码强度
批量生成
常见问题
什么是密码生成器?
密码生成器是一种使用加密安全随机数生成来创建随机、不可预测密码的工具。与人类创建的密码(倾向于遵循模式且可预测)不同,生成的密码使用可用字符集的最大随机性,使其极其抵抗暴力攻击、字典攻击和社会工程学。
如何使用此密码生成器?
选择模式:密码(随机字符)或密码短语(随机单词)。调整长度滑块设置所需密码长度(建议16个字符以上)。切换字符类型:大写、小写、数字、符号。更改设置时密码会自动生成。检查强度计确认满足安全需求。点击复制按钮复制到剪贴板。
我的密码数据安全吗?会发送到服务器吗?
您的密码100%安全,永远不会离开浏览器。此工具使用Web Crypto API(crypto.getRandomValues())完全在您的设备上生成密码。密码数据从不传输到任何服务器、存储在任何数据库中或记录在任何地方。
什么是密码熵?为什么重要?
熵以比特为单位衡量密码的随机性和不可预测性。熵越高,通过暴力攻击破解密码就越困难。计算公式为 E = L × log₂(C),其中L是密码长度,C是字符池大小。安全专家建议标准账户至少60位,高安全性应用120位以上。
密码和密码短语有什么区别?
密码是随机字符串(如 K9$mPq2#vL7n),而密码短语是随机单词序列(如 correct-horse-battery-staple)。密码短语通常在提供高熵的同时更容易记忆。
密码应该多长?
NIST建议至少8个字符,但安全专家通常建议标准账户12-16个字符以上,敏感账户(银行、电子邮件)20个字符以上。此工具默认16个字符,启用所有字符类型时提供约103.8位熵。
为什么使用crypto.getRandomValues()而不是Math.random()?
Math.random()是使用确定性算法的伪随机数生成器(PRNG)。crypto.getRandomValues()是由操作系统熵源支持的加密安全PRNG(CSPRNG),适用于密码生成等安全敏感应用。此工具专门使用crypto.getRandomValues()以确保最大安全性。
代码示例
// Secure password generator using Web Crypto API
function generatePassword(length = 16, options = {}) {
const { uppercase = true, lowercase = true, numbers = true, symbols = true } = options;
let charset = '';
if (uppercase) charset += 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
if (lowercase) charset += 'abcdefghijklmnopqrstuvwxyz';
if (numbers) charset += '0123456789';
if (symbols) charset += '!@#$%^&*()_+-=[]{}|;:,.<>?';
const array = new Uint32Array(length);
crypto.getRandomValues(array);
let password = '';
for (let i = 0; i < length; i++) {
password += charset[array[i] % charset.length];
}
return password;
}
const pwd = generatePassword(20);
console.log(pwd);
console.log('Entropy:', (20 * Math.log2(90)).toFixed(1), 'bits');