如何设置强密码并管好它们

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)103.3226.639.953.266.4
小写字母264.7037.656.475.294.0
大小写字母525.7045.668.491.2114.0
字母和数字625.9547.671.595.3119.1
全部可打印 ASCII 字符946.5552.478.7104.9131.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 等专用应用则能跨浏览器和设备使用,管理也更灵活。还有一个附带好处:密码管理器只会在保存密码的那个网站上自动填写,所以如果在一个和你的银行网站一模一样的页面上它没有自动填写,请仔细检查网址,那可能是钓鱼网站。

  1. 安装密码管理器,用 6 个单词的密码短语作为主密码。在完全记住之前,把它写在纸上,放在家里安全的地方。
  2. 为密码管理器本身开启双重验证。
  3. 先把最重要的账号(邮箱、银行、手机或云账号、社交媒体)改成新的 16~20 位随机密码。
  4. 其余账号在之后每次登录时逐个更换。

双重验证和通行密钥

双重验证(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)也建议服务方不要强制定期修改。等到有理由时再改,比如发生了泄露。

相关工具

  • 密码生成器 – 用浏览器的安全随机数生成随机密码,并显示熵的估算值。
  • 哈希生成器 – 看看 MD5、SHA-1、SHA-256 如何把文本变成固定长度的值。
  • UUID 生成器 – 为数据库和测试数据生成唯一 ID(不适合用作密码)。