随机密码生成器
加密安全的密码,在你的设备上生成。
这个密码生成器的工作原理
本页每一个密码都由浏览器的 Web Crypto API(crypto.getRandomValues)产生,这与生成 TLS 密钥和加密令牌所用的随机源相同,而不是许多简易工具依赖的、可预测的 Math.random()。生成器采用拒绝采样,保证所选字符集中每个字符出现的概率完全相等;同时确保每个勾选的字符组至少出现一次,然后对结果洗牌,避免这些保证出现的字符落在可预测的位置。
因为生成完全在你的设备上进行,密码不会被传输、记录或存储在任何地方。你可以加载本页后断开网络,继续生成密码。
如何选择一个好密码
长度比其他任何因素都重要。一个由字母、数字和符号组成的 16 位密码大约有 100 比特的熵,远远超出任何离线暴力破解的能力范围。对于限制特殊字符的服务,保留字母和数字但把长度提高到 20 位以上,可以获得同等强度。密码下方的熵值计算方式为 长度 × log2(字符集大小),让你能客观地比较不同设置,而不是靠猜。
当你需要把密码念出来或从屏幕上抄写时,勾选「排除易混淆字符」,它会去掉在很多字体中容易混淆的 0、O、1、l、I 和 |。需要同时开设多个账号时可以一次生成多个密码,并把它们全部保存到密码管理器中,而不是重复使用同一个。
为什么随机密码优于好记的密码
人类选择的密码来自一个很小且可预测的空间:字典词、人名、日期、键盘规律以及 a→@ 这类简单替换。破解工具会优先尝试这些,大多数人为选择的密码很快就会被攻破。均匀随机的字符串没有任何这类结构,攻击者唯一的办法就是穷举所有组合。把随机密码与密码管理器和两步验证结合使用,你的账号就能抵御真正常见的攻击:撞库、数据库泄露,以及针对重复使用密码的钓鱼。
背景:从密码到密码管理器
计算机密码可追溯到 1961 年 MIT 的 CTSS 系统,之后几十年的建议一直是「要好记」。当攻击者可以对泄露的哈希库每秒尝试数十亿次猜测后,这一切改变了:NIST 2017 年的指南(SP 800-63B)放弃了强制复杂度规则和定期更换,转而强调长度、唯一性以及对照已泄露密码列表检查。现实后果是人脑记不住几十个互不相同的 16 位字符串,所以这类生成器的正确用法是搭配密码管理器——由它保存、自动填充并跨设备同步。
应用领域
除了注册账号,这里生成的随机字符串还可以用作 API 密钥和 Webhook 签名密钥、Wi-Fi 密码(再做成一张 Wi-Fi 二维码)、.env 文件里的数据库和 SMTP 凭据、新员工入职的临时密码、压缩包和磁盘镜像的加密口令,以及脚本里的一次性令牌,包括 HMAC 签名所用的密钥。用于数据库 URL 或 Basic 认证头时,注意 @、:、/ 这类符号必须做百分号编码,或者干脆不含符号、用更长的长度补足。当密钥必须放进配置文件或请求头时,先做 Base64 编码可以保证它在一行之内。
常见问题
在网站上生成密码安全吗?
在本页是安全的:生成使用浏览器的加密随机数发生器,且不向任何地方发送数据。你可以断开网络来验证——工具照常工作。
密码应该多长?
普通账号至少 12 位;邮箱、银行以及任何能用来保护其他账号的服务至少 16 位。当网站限制符号时,用额外的长度来补偿。
熵值代表什么?
熵(比特)衡量攻击者平均需要猜多少次。每增加 1 比特,工作量翻倍。超过 80 比特的密码在当前硬件下已经无法被离线暴力破解。
生成器会记住我的设置吗?
你的选项(长度、字符组)会保存在浏览器的本地存储中,下次打开自动恢复。生成的密码本身绝不会被保存。
可以用来生成口令短语或 PIN 码吗?
生成数字 PIN 时只勾选「数字」并设置长度即可。本工具生成的是字符串;基于单词的口令短语请使用专门的 diceware 词表。