AES 加密详解:小锁背后的算法,以及它对你的数据意味着什么
2026-08-21
每次看到小锁图标,背后多半是 AES 在干活——TLS、磁盘加密、密码管理器、加密笔记。但 AES 也是最容易被滥用的算法:人们”用密码加密”就以为足够了,而真正的安全决策藏在三个从没想过的地方——密码如何变成密钥、用哪种模式运行密码、nonce 是否唯一。本文给你三层心智模型,让你能分辨”真正加密过的文件”和”只是装饰了一下的文件”。
一把钥匙同时管加密和解密
AES 是对称加密:同一把钥匙既加密又解密。谁拿到钥匙谁就能读数据——这既是它的威力(快、简单),也是它的契约(保护不好钥匙,就等于什么都没加密)。它和 RSA 这类非对称体系相反:后者公钥加密、单独的私钥解密。AES 也不是哈希:哈希没有钥匙、不可逆、输出定长。哈希是另一个话题;加密是一扇带钥匙的双向门。
密钥长度:128、192、256
AES 有三种密钥长度——AES-128、AES-192、AES-256。数字是密钥的比特数,决定内部轮数(10/12/14 轮)。
两点值得知道:
- 256 并不是”128 的两倍安全”。 多 128 比特意味着搜索空间大了天文数字倍,但针对现实攻击,AES-128 已经不可达。实际差异是速度(略慢)和一些场景偏好的安全余量。
- 密钥长度的重要性远低于密钥怎么生成、怎么使用。 弱密码派生的 AES-256 密钥仍然是弱密钥。强密钥材料在 ECB 模式下照样被攻破。把流程做对,比特数对你的风险而言只是零头。
密码不是密钥
你输入的是密码;AES 需要恰好 16、24 或 32 字节的密钥。这个翻译过程叫密钥派生函数(KDF),而大多数”被加密”的文件正是从这一步被破解的。
标准做法是 PBKDF2(或 Argon2、scrypt 这类现代替代):把密码连同随机盐反复喂进哈希——几千到几百万次——最终得到密钥。两个推论:
- 盐。 每次加密用随机盐,意味着同一密码永远不会生成同一把密钥——两个用相同密码”加密”的文件不会暴露它们相同,预计算的密码表也失效。
- 迭代次数。 反复哈希是刻意变慢的,因为这让猜测你的密码变得昂贵。KDF 只跑一次的”加密”文件可以轻易被暴力破解;跑 60 万次的则是”几分钟”和”几年”的差别。
用密码加密时,先问 KDF 是什么——而不是只盯着上面写着哪种密码算法。
工作模式:真正的漏洞在这里
AES 加密固定 16 字节的分组。模式把这些分组串起来加密任意长度的数据,而决定安全的是模式——不是算法本身:
- ECB——每个分组独立加密。两个相同的明文分组产生相同的密文分组,会泄露模式(著名的加密企鹅图)。永远别用 ECB。
- CBC——每个分组链到前一个,并使用随机 IV(初始化向量)。可靠,但需要正确的填充,且不提供认证。
- GCM——认证模式:会产生一个认证标签,能检测密文被篡改。这是你该默认选用的:一个模式同时提供加密和完整性。GCM 还有一个 nonce 要求——同一把密钥下 nonce 绝不能复用,否则安全性崩塌。
实用结论:优先 GCM,每次加密都用全新的随机 nonce/IV,绝不要把密钥与密文放在一起时共享 nonce。
加密保护的是机密性,不是完整性或身份
AES 隐藏内容;它不证明谁发的、也不证明没被改过。那是哈希和消息认证码的工作:
- 哈希是数据的定长指纹——能检测意外或恶意的改动,但没有钥匙。
- MAC(如 HMAC)是带钥匙的哈希——既能检测改动,又能证明数据来自持钥匙的人。GCM 内部就打包了一个 HMAC 风格的标签。
这就是为什么 JWT 的签名和加密是两个步骤,也是为什么”加密了”不等于”可信”。两者都需要时,用认证模式(GCM)或”先加密再 MAC”。
实用清单
自己加密数据时——一个文件、一条笔记、一个配置值:
- 工具支持就用 AES-256-GCM(否则用带随机 IV 的 CBC)。
- 用强 KDF 从密码派生密钥——高迭代的 PBKDF2,或 Argon2/scrypt——加上随机盐。
- 每次加密生成全新随机 nonce/IV;同一把钥匙下绝不复用。
- nonce 和盐可以随密文存放(它们不是机密),但钥匙绝不。
- 用长且唯一的密码——KDF 能拖慢猜测,但救不了 “password123”。
- 别自己造轮子。任何自研方案几乎必定在以上某一步出错。
快速参考
- AES 是对称加密:一把钥匙既加密又解密。它既不是哈希(无钥匙、不可逆),也不是非对称(无密钥对)。
- 密钥 128/192/256 → 轮数 10/12/14;256 不是”两倍安全”,而是更大的余量。
- 密码经 KDF(PBKDF2/Argon2/scrypt)变成密钥:随机盐 + 高迭代。弱 KDF = 可被暴力破解的文件。
- 模式决定安全:绝不用 ECB,CBC 需要随机 IV,GCM 带认证、是最佳默认。
- GCM 的 nonce 每把钥匙必须唯一——复用会让加密崩塌。
- 加密只管机密性;完整性和身份来自哈希和 MAC(HMAC、GCM 标签)。
- 清单:AES-256-GCM + 强 KDF + 随机盐 + 每条消息唯一 nonce/IV + 长密码。绝不手搓。
想用密码在本机加密一段字符串,AES Encryption Tool 用的是基于密码的 AES-GCM,带随机盐和逐消息 nonce——正是本文推荐的流程。想知道某物是否被篡改(而非隐藏),用 Hash Generator 生成指纹来比对。