如何设置强密码并管好它们
2026 年 11 月更新
强密码就是攻击者猜不到的密码,而得到强密码唯一可靠的办法,就是让计算机随机生成。很多密码建议至今仍纠结于“加一个大写字母”“加一个符号”这类细节,但真正的风险是密码太短、套路明显,以及在多个网站使用同一个密码。本文介绍密码强度取决于什么、如何衡量强度,以及如何在不背几十串随机字符的情况下保证安全。
密码是怎样被攻破的
- 在线猜测。有人在登录页面上逐个尝试密码。尝试次数限制和账号锁定会拖慢速度,所以这样被攻破的主要是
123456、qwerty之类非常常见的密码。 - 离线破解。网站数据库被盗后,攻击者会拿到密码哈希(密码经过变换后的值),然后在自己的设备上以硬件允许的最快速度验证猜测。这时,长度和随机性最为关键。
- 撞库。攻击者把从一个网站泄露的邮箱和密码组合,自动拿到其他网站上去试。这种攻击完全不需要破解,之所以奏效,只是因为人们重复使用密码。
还有第四种途径:钓鱼,也就是用假的登录页面骗你输入密码。再强的密码也挡不住钓鱼,这正是双重验证和通行密钥重要的原因之一。
长度比复杂度更重要
每多一个字符,可能的密码数量就要乘以字符集的大小;而多加一种字符类型,只是让字符集稍微变大一点。从键盘上全部 94 个可打印字符中随机选 8 个,大约有 6.1 × 10¹⁵ 种组合;随机选 12 个小写字母,则大约有 9.5 × 10¹⁶ 种,是前者的 15 倍以上,而且在手机上输入也方便得多。符号确实能增加强度,但如果某个网站不接受部分符号,把密码加长才是更好的选择。
通俗理解“熵”
密码强度用熵(比特)来衡量。1 比特相当于抛一次硬币:猜中一个 40 比特的密码,就像连续猜中 40 次抛硬币的结果一样难。每多 1 比特,攻击者的工作量就翻一倍,所以 50 比特不是比 40 比特难 25%,而是难大约 1,000 倍(2¹⁰ = 1,024)。
对于随机生成的密码,熵很容易计算:长度 × log₂(可用字符的数量)。
| 字符集 | 字符数 | 每个字符的比特数 | 8 位 | 12 位 | 16 位 | 20 位 |
|---|---|---|---|---|---|---|
| 仅数字(0–9) | 10 | 3.32 | 26.6 | 39.9 | 53.2 | 66.4 |
| 小写字母 | 26 | 4.70 | 37.6 | 56.4 | 75.2 | 94.0 |
| 大小写字母 | 52 | 5.70 | 45.6 | 68.4 | 91.2 | 114.0 |
| 字母和数字 | 62 | 5.95 | 47.6 | 71.5 | 95.3 | 119.1 |
| 全部可打印 ASCII 字符 | 94 | 6.55 | 52.4 | 78.7 | 104.9 | 131.1 |
为了更直观,假设有一个离线攻击者每秒能验证 100 亿次猜测。这只是用显卡攻击快速哈希时的一个粗略示例数字;如果网站使用 bcrypt 或 Argon2 这类慢速密码哈希,速度会低好几个数量级。平均来说,随机密码会在尝试了所有可能的一半时被找到:
| 随机密码 | 熵 | 每秒 100 亿次时的平均耗时 |
|---|---|---|
| 8 位小写字母 | 37.6 比特 | 约 10 秒 |
| 8 位,包含所有类型 | 52.4 比特 | 约 3.5 天 |
| 12 位小写字母 | 56.4 比特 | 约 55 天 |
| 16 位小写字母 | 75.2 比特 | 约 6.9 万年 |
| 12 位,包含所有类型 | 78.7 比特 | 约 75 万年 |
| 16 位,包含所有类型 | 104.9 比特 | 宇宙年龄的数千倍 |
需要注意的是,这些数字只适用于随机密码。Summer2026! 有 11 个字符,四种类型都用上了,按公式算约有 72 比特,但“单词 + 年份 + 符号”正是破解工具最先尝试的套路。人自己想出来的密码远比公式算出的弱,所以只数字符类型的强度提示并不可靠。
比较合理的目标是:普通账号 70~80 比特,邮箱、密码管理器这类能打开其他一切的账号 100 比特以上。密码生成器会显示每个密码的熵,它的默认设置(16 位、四种字符类型)约为 103 比特。
密码短语:既强又好记
对于少数必须记住的密码,比如电脑登录密码或密码管理器的主密码,可以使用密码短语。做法是从一个大词表中随机挑选单词,例如掷骰子从含 7,776 个英文单词的 Diceware 词表中选。每个单词约贡献 12.9 比特:4 个单词为 51.7 比特(一旦哈希泄露就不够用),5 个为 64.6 比特,6 个为 77.5 比特,适合用作主密码。
6 个单词看起来像 maple tundra spoon orbit velvet kettle(这个例子已经公开,请不要使用)。自己编的句子、歌词或名言都早已收录在破解字典里。大写字母和分隔符作用很小,多加一个随机单词效果要大得多。
使用密码管理器
没有人能记住上百个各不相同的随机密码。密码管理器把密码保存在一个由强主密码保护的加密保险库里,帮你自动填写,并在设备之间同步。可以先从浏览器和手机自带的密码管理功能开始;Bitwarden、1Password、KeePassXC 等专用应用则能跨浏览器和设备使用,管理也更灵活。还有一个附带好处:密码管理器只会在保存密码的那个网站上自动填写,所以如果在一个和你的银行网站一模一样的页面上它没有自动填写,请仔细检查网址,那可能是钓鱼网站。
- 安装密码管理器,用 6 个单词的密码短语作为主密码。在完全记住之前,把它写在纸上,放在家里安全的地方。
- 为密码管理器本身开启双重验证。
- 先把最重要的账号(邮箱、银行、手机或云账号、社交媒体)改成新的 16~20 位随机密码。
- 其余账号在之后每次登录时逐个更换。
双重验证和通行密钥
双重验证(2FA)在密码之外还要求另一样东西,所以光偷到密码还登录不了。要注意,国内很多应用支持直接用短信验证码登录,这时短信就是唯一的验证因素,并不算双重验证。第二重验证方式的强度也各不相同:
| 方式 | 原理 | 弱点 |
|---|---|---|
| 短信或邮件验证码 | 向手机或邮箱发送一次性验证码 | 短信可能通过 SIM 卡劫持被截获,验证码也可能被钓鱼骗走 |
| 身份验证器应用 | 应用显示每 30 秒变化一次的 6 位数字 | 离线也能用,但仍可能被骗着把验证码输入假网站 |
| 安全密钥或通行密钥 | 与真实网站域名绑定的公钥密码技术 | 浏览器不会在仿冒域名上使用它,因此能抵御钓鱼 |
通行密钥(Passkey)更进一步,直接取代了密码。你的设备会生成一对密钥:网站只保存公钥,私钥留在你的设备或密码管理器中,通过指纹、面容或屏幕锁解锁。没有可以重复使用的东西,服务器上也没有能让窃贼登录的东西,更没有需要在假页面上输入的东西。如果某项服务支持通行密钥,它通常是最安全的选择。无论用哪种方式,开启双重验证时网站给出的恢复码都要保存好,放在密码管理器里或写在纸上,这样即使丢了手机也不会被锁在账号之外。
重复使用与泄露
对大多数人来说,最大的风险就是重复使用密码:只要一个网站泄露,所有使用同一密码的账号都会暴露在撞库攻击之下。
Have I Been Pwned 等服务可以查询你的邮箱地址是否出现在已知的泄露事件中。它的密码查询使用了一种叫 k-匿名的方法:在浏览器中用 SHA-1 对密码进行哈希,只发送哈希值的前五个字符。比如 password 的 SHA-1 哈希以 5BAA61E4C9B9… 开头,离开你设备的只有 5BAA6,服务会返回所有以这五个字符开头的已泄露哈希,比对在本地完成。你可以用哈希生成器观察哈希的变化,但请用测试字符串,不要输入真实密码。设计良好的网站会用 bcrypt 或 Argon2 这类慢速算法而不是单纯的 SHA-256 来存储密码,但你从外面看不出网站是怎么做的,所以每个网站都应使用不同的密码。
如果某个密码已经泄露,请在该网站以及所有用过相同或相似密码的地方修改密码,退出其他设备上的登录,并开启双重验证。
不要这样做
- 不要用姓名、生日、宠物名、手机号或用户名来组成密码。
- 不要指望字符替换:在破解工具眼里,
P@ssw0rd就是“password”。 - 不要使用
1q2w3e4r这样的键盘顺序,也不要每次被要求改密码时只把末尾的数字加一。 - 不要把密码直接记在备忘录、表格或发给自己的邮件里,也不要通过聊天软件发送。需要共享账号时,请使用密码管理器的共享功能。
- 如果密保问题的答案能在网上查到,就不要如实回答。编一个随机答案,保存在密码管理器里。
- 不要把标识符当作秘密使用。UUID 生成器很适合生成唯一 ID,但 ID 常常出现在网址和日志中,而且第 7 版 UUID 的开头就是时间戳。
- 不要为了改而定期更换好密码。强制更换容易催生可预测的变体,美国 NIST 的指南(SP 800-63B)也建议服务方不要强制定期修改。等到有理由时再改,比如发生了泄露。