常见的加密算法和摘要算法有哪些?
简化版
分三类:对称加密(加解密同一把密钥,快,用于加密大量数据)——AES、DES、3DES、ChaCha20;非对称加密(公私钥一对,慢,用于密钥交换和签名)——RSA、ECC、DH/ECDHE;摘要/哈希算法(不可逆,把任意数据压成固定长度指纹,用于校验完整性和签名)——MD5、SHA-1、SHA-256。其中 MD5、SHA-1、DES 已不安全,现在用 AES、SHA-256、RSA/ECC。
详细版
| 类别 | 代表算法 | 特点 | 用途 |
|---|---|---|---|
| 对称加密 | AES、DES、3DES、ChaCha20 | 一把密钥、快 | 加密业务数据 |
| 非对称加密 | RSA、ECC、DH/ECDHE | 公私钥、慢 | 密钥交换、数字签名 |
| 摘要/哈希 | MD5、SHA-1、SHA-256 | 不可逆、定长指纹 | 完整性校验、签名、存密码 |
- 对称加密:AES 是当前标准(安全、快,有硬件加速);DES(56 位密钥)已被暴力破解、3DES 也在淘汰。
- 非对称加密:RSA 经典但密钥长(2048/3072 位);ECC(椭圆曲线)用更短的密钥达到同等安全、更快,是趋势。
- 摘要算法:SHA-256 是当前主流;MD5 和 SHA-1 已被攻破(能构造碰撞),不能再用于安全场景。
完整版教学
一、加密 vs 摘要:可不可逆
先分清两个大类,它们目的完全不同:
- 加密(对称/非对称)是可逆的:目的是保密——加密后能用密钥解回原文。
- 摘要/哈希是不可逆的:目的是校验完整性 / 生成指纹——把任意数据压成固定长度的摘要,无法从摘要反推原文,且原文改一点摘要就面目全非(雪崩效应)。
所以「哈希不是加密」——它不能解密还原,是单向的。密码存储、文件校验、数字签名都用它(详见「数字签名」那道题)。
二、对称加密:快,但有密钥分发难题
对称加密加解密用同一把密钥,速度快,适合加密大量数据。代表是 AES(Advanced Encryption Standard)——安全性经受住了考验,现代 CPU 还有 AES-NI 硬件指令加速,几乎无性能负担。
它唯一的痛点是密钥分发:通信双方怎么安全地共享这把密钥?直接传会被截获。这就要靠非对称加密来解决(详见「对称加密和非对称加密的区别」那道题)。
- DES:56 位密钥太短,早已能被暴力破解,淘汰;
- 3DES:DES 的三重加强版,安全但慢,也在退役;
- ChaCha20:现代流密码,在没有 AES 硬件加速的设备(如手机)上比 AES 更快,TLS 1.3 支持。
三、非对称加密:慢,但解决密钥分发和签名
非对称加密用公钥 + 私钥一对,公钥加密私钥解(保密),或私钥签名公钥验(认证)。它慢,不适合加密大数据,但解决了两个关键问题:密钥分发(用公钥安全地协商对称密钥)和数字签名/身份认证。
- RSA:最经典,基于大数分解难题。安全但密钥长(现在建议 2048 位以上)、运算慢;
- ECC(椭圆曲线):基于椭圆曲线离散对数难题,用短得多的密钥达到同等安全(256 位 ECC ≈ 3072 位 RSA),更快、更省,是现代趋势;
- DH / ECDHE:密钥交换算法(不是加密数据),让双方在公开信道协商出共享密钥,ECDHE 还带前向安全(详见「前向安全性」那道题)。
四、摘要算法与「碰撞」
摘要算法的安全性核心在于抗碰撞——很难找到两个不同的输入产生相同的摘要。一旦能构造碰撞,就能伪造(比如伪造一个和正版文件哈希相同的恶意文件)。
- MD5(128 位):已被攻破,能快速构造碰撞,绝不能用于安全场景(签名、证书),只能做非安全的校验(如文件完整性粗检);
- SHA-1(160 位):也已被攻破(2017 年 Google 演示了碰撞),正在全面淘汰;
- SHA-256 / SHA-2 系列:当前主流,安全;
- SHA-3:更新的标准,作为备选。
⚠️ 存用户密码不能只用 MD5/SHA 直接哈希——它们太快,容易被彩虹表/暴力破解。应该用专门的慢哈希 + 加盐(bcrypt、scrypt、Argon2),故意让计算变慢来抵御破解。
五、它们在 HTTPS 里怎么配合
一次 HTTPS 连接把三类算法都用上了(详见「TLS 握手过程」那道题):
- 非对称(RSA/ECDHE):握手时协商出对称密钥、验证证书签名;
- 对称(AES):握手后加密传输业务数据;
- 摘要(SHA-256):做消息认证码(MAC)保证数据没被篡改、以及证书签名里的哈希。
「非对称传钥、对称传数据、哈希验完整」——这就是 HTTPS 混合密码学的全貌。
六、常见误区
- ❌ 把哈希当加密——哈希不可逆、不能解密还原,是单向指纹,不是加密。
- ❌ 还用 MD5/SHA-1 做安全校验或签名——已被攻破能构造碰撞,用 SHA-256。
- ❌ 用 MD5/SHA 直接存密码——太快易破解,要用 bcrypt/scrypt/Argon2 加盐慢哈希。
- ❌ 以为 RSA 会被 ECC 完全取代——ECC 是趋势,但 RSA 仍广泛用于证书签名等。
六、常见误区与追问
| 考点 | 正确口径 |
|---|---|
| 对称加密 | AES、ChaCha20,快,适合大量数据 |
| 非对称加密 | RSA、ECC,慢,适合密钥交换或签名 |
| 摘要算法 | SHA-256 等,不可逆,用于完整性校验 |
TLS:
ECDHE -> negotiate shared secret
signature -> authenticate server
AES/ChaCha20 -> encrypt application data
SHA-256 -> hash transcript
HTTPS 不是只用一种算法,而是加密、签名、摘要、密钥交换组合使用。
- 误区:摘要算法也是加密算法。 摘要不可逆,不能解密回原文,主要用于完整性和指纹。
- 误区:非对称加密更安全所以全程用它。 非对称计算慢,通常只用于认证和密钥协商,大量数据用对称加密。
- 误区:MD5 仍适合安全签名。 MD5 已不适合安全场景,存在碰撞风险。
- 追问:AES-GCM 有什么特点? 它同时提供加密和认证,能检查密文是否被篡改。
- 追问:RSA 和 ECDHE 在 TLS 中角色有什么不同? RSA 可用于签名或旧式密钥交换,ECDHE 用于生成具备前向安全的共享密钥。
- 追问:盐值解决什么? 在口令哈希中加入随机盐,防止相同密码摘要相同并抵抗彩虹表。
七、加强记忆
三类算法:对称加密(AES/DES/ChaCha20,一把密钥、快、加密数据)、非对称加密(RSA/ECC/DH,公私钥、慢、密钥交换与签名)、摘要哈希(MD5/SHA-1/SHA-256,不可逆定长指纹、校验完整性)。MD5/SHA-1/DES 已不安全,现用 AES/SHA-256/RSA-ECC。哈希≠加密(不可逆);存密码要用 bcrypt/Argon2 加盐慢哈希;HTTPS 三类配合:非对称传钥、对称传数据、哈希验完整。