密码生成器
使用 Web Crypto API 创建任何长度的密码,确保密码随机且强大。自定义字符集和长度,查看熵分数,一键复制。
根据 Verizon 2023 数据泄露调查报告,弱或重复使用的密码导致 80% 的黑客数据泄露。一个结合大写字母、小写字母、数字和符号的 16 个字符密码具有超过 1028 种可能组合--使用当前硬件进行暴力破解需要数十亿年。此生成器使用浏览器的 crypto.getRandomValues() API,与操作系统和安全库使用的相同 CSPRNG。NIST 特别出版物 800-63B 建议最少 8 个字符;安全专业人士广泛建议使用 16 个或更多。生成的密码绝不传输到任何服务器。
如何生成密码
- 使用滑块或输入框设置所需的密码长度(8-128 个字符)。
- 选择要包含的字符类型:大写字母、小写字母、数字和/或符号。
- 点击 生成 创建新密码。
- 查看熵分数和强度指示器。
- 点击 复制 将密码复制到剪贴板。
- 立即将生成的密码存储在密码管理器中。
密码强度解释
熵和字符集大小
密码强度以熵的位数来衡量--总可能组合的对数(以 2 为底)。长度为 L 的密码使用大小为 N 的字符集,其熵为 L × log₂(N) 位。字符集大小:仅小写 = 26;+ 大写 = 52;+ 数字 = 62;+ 32 个常见符号 = 94。来自完整 94 字符集的 16 个字符密码具有约 104.7 位熵。NIST 认为 112 位熵足以满足大多数安全应用,直至 2030 年。
为什么长度比复杂性更重要
添加一个字符会将搜索空间乘以字符集大小。一个 20 个字符的小写字母密码(约 94 位熵)比一个 10 个字符的包含所有字符类型的密码(约 65 位)更强大。NIST SP 800-63B 和安全研究人员都建议优先考虑长度,而不是强制复杂性规则,这些规则往往会产生可预测的模式--大写字母在前,数字在后,! 在最后。
示例
生成的密码(16 个字符,所有字符类型)
kR9#mXv2@TqL5!nW
长度: 16 个字符
熵: ~104.7 位
字符集: 94(a-z, A-Z, 0-9, 符号)
破解时间: 当前硬件上数十亿年
NIST SP 800-63B 指南
- 最小长度:用户选择的密码最少 8 个字符;允许最多 64 个字符
- 无强制复杂性规则:NIST 的 2017 年修订版取消了对大写字母、数字和符号的要求--这些规则会产生弱且可预测的模式
- 无定期强制更改:除非有证据表明被泄露,否则不再推荐强制轮换
- 检查被泄露的密码:密码应与像 HaveIBeenPwned 的被泄露密码列表这样的数据库进行验证
- 密码短语有效:明确鼓励使用随机单词的长密码短语作为替代
最佳实践
- 使用密码管理器(1Password、Bitwarden、KeePass)--不要记住随机密码
- 为每个账户生成唯一密码--重复使用意味着一次泄露会暴露所有账户
- 对于密码管理器的主密码,使用 5 个以上单词的密码短语,而不是随机字符字符串
- 在所有关键账户上启用双因素认证,并使用强密码
要生成密码以外的密码学随机标识符,请使用 UUID 生成器。要在配置文件或 HTTP 头中编码密码,Base64 编码器 处理二进制安全传输。
常见问题
生成的密码是否存储或记录在任何地方?
不。密码完全在您的浏览器中使用 crypto.getRandomValues() 生成。它们从未发送到任何服务器,未被记录,并在您关闭或刷新页面时消失。在生成时打开浏览器的网络标签,您将看到零个外发请求。
我的密码应该多长?
NIST SP 800-63B 设置的最小长度为 8 个字符。安全专业人士建议大多数账户至少使用 16 个字符,对于高价值账户(电子邮件、银行、密码管理器主密码)建议 20 个或更多。使用 94 个字符集,16 个字符的密码具有约 105 位熵--使用当前或未来硬件进行暴力破解是不可行的。
我应该在密码中包含符号吗?
是的,当服务允许时。包含符号将字符集从 62 个字符增加到 94 个字符,每个字符增加约 0.66 位熵。超过 16 个字符时,大约增加 10.5 位额外熵。更大的好处仍然来自长度:一个 20 个字符的字母和数字密码比一个 12 个字符的全符号密码更强。
随机密码和密码短语有什么区别?
随机密码是一串随机字符,优化以在最小长度下实现最大熵。密码短语是一系列随机单词(例如,correct-horse-battery-staple),以可记忆性换取长度。一个 5 个单词的骰子短语(7,776 个单词的词表)具有约 65 位熵。对于密码管理器条目,使用随机字符密码。对于主密码,使用您可以记住的密码短语。
我可以使用这个生成器生成 Wi-Fi 密码或 API 令牌吗?
对于 Wi-Fi (WPA2/WPA3),一个包含所有字符类型的随机 20 个字符密码非常优秀--只需在需要在设备上输入之前保存它。对于 SSH 密钥和 API 令牌,使用专用生成命令(ssh-keygen,您的 API 提供商的令牌创建流程),而不是手动生成密码。