一、对称加密算法(Symmetric Encryption)
1. 分类 & 代表性算法
| 分类 | 
代表算法 | 
简介 | 
| 分组加密 | 
DES、3DES、AES、SM4 | 
每次加密固定长度的数据块,如128位 | 
| 流加密 | 
RC4、ZUC | 
一位一位或字节流加密,适合实时通信 | 
2. 密码模式(Block Cipher Modes)
用于分组加密算法,决定如何处理多个数据块:
| 模式 | 
全称 | 
特点与适用场景 | 
| ECB | 
Electronic Codebook | 
每块独立加密,易被模式分析攻击,不安全 | 
| CBC | 
Cipher Block Chaining | 
每块依赖前一块,增加随机性,适合大数据加密 | 
| CFB | 
Cipher Feedback | 
类似流加密,适合实时传输 | 
| OFB | 
Output Feedback | 
错误不传播,适合串行加密 | 
| CTR | 
Counter Mode | 
并行加密,提高效率,适合多核系统 | 
| GCM | 
Galois/Counter Mode | 
支持认证和加密,适合网络协议,如TLS | 
3. 应用场景
- 文件加密(如AES-CBC)
 
- VPN 加密(如AES-GCM)
 
- 数据库存储加密(如SM4)
 
- HTTPS 会话数据加密(与非对称算法配合)
 
4. 优缺点
| 优点 | 
缺点 | 
| 加密解密速度快,适合大数据量传输 | 
密钥必须安全分发,容易泄露即被破解 | 
| 算法成熟,硬件支持丰富 | 
无法实现数字签名,不能确保身份和完整性 | 
二、非对称加密算法(Asymmetric Encryption / Public-Key Encryption)
1. 分类 & 代表性算法
| 类别 | 
代表算法 | 
简介 | 
| 基于大数分解 | 
RSA | 
最经典的非对称算法,支持加密和签名 | 
| 基于离散对数问题 | 
DSA、ElGamal | 
用于数字签名,ElGamal 可用于加密 | 
| 基于椭圆曲线 | 
ECC(如ECDSA, ECDH) | 
提供更高强度,密钥更短,适合移动设备 | 
| 国密算法 | 
SM2 | 
国密非对称加密算法,基于ECC | 
2. 应用场景
- 数字签名(如SSL证书签名)
 
- 密钥交换(如HTTPS的握手阶段)
 
- 区块链签名(如比特币用ECDSA)
 
- 身份认证、电子合同、电子邮件加密
 
3. 优缺点
| 优点 | 
缺点 | 
| 不需要共享密钥,安全性高 | 
运算复杂,效率低,不适合大数据量加密 | 
| 可用于签名,确保身份认证和完整性 | 
算法设计复杂,容易因参数选择错误而不安全 | 
| 可用于构建PKI(公钥基础设施)体系 | 
密钥长度较长,传输和存储成本高 | 
三、哈希算法(Hash Functions)
1. 分类 & 代表性算法
| 类型 | 
代表算法 | 
简介 | 
| 常规哈希 | 
MD5、SHA-1、SHA-256/512、SM3 | 
生成固定长度的摘要,用于校验、签名等 | 
| 密钥哈希 | 
HMAC-MD5、HMAC-SHA256 | 
加盐(带密钥)哈希,用于认证 | 
| 特殊哈希 | 
bcrypt、scrypt、Argon2 | 
专为密码保护设计,抗暴力破解 | 
2. 应用场景
- 数据完整性校验(如Git、文件下载校验)
 
- 数字签名(如SSL证书中的签名)
 
- 密码保护(如系统登录密码存储)
 
- 区块链(如比特币区块结构)
 
3. 优缺点
| 优点 | 
缺点 | 
| 一致性强,相同输入一定生成相同输出 | 
一旦被破解(如MD5、SHA-1),将不再安全 | 
| 摘要固定长度,节省存储 | 
无法还原原文,只用于验证和比对 | 
| 算法计算快,适合大规模数据校验 | 
对碰撞攻击较敏感,需选用安全算法(如SHA-256、SM3) | 
四、三者综合对比
| 特性 | 
对称加密 | 
非对称加密 | 
哈希算法 | 
| 加解密双方 | 
相同密钥 | 
公钥加密,私钥解密 | 
仅单向处理,无解密 | 
| 用途 | 
数据保密 | 
签名、身份认证、密钥交换 | 
数据校验、签名辅助 | 
| 性能 | 
快 | 
慢 | 
非常快 | 
| 安全性 | 
依赖密钥安全 | 
更安全,适合开放场景 | 
摘要碰撞要避免 | 
| 是否可逆 | 
是 | 
是 | 
否(单向) | 
五、常见组合应用场景举例
- HTTPS / TLS:使用非对称加密(RSA/ECDHE)交换对称密钥(AES),传输数据用AES加密,消息摘要用哈希(SHA-256)进行签名验证。
 
- 区块链:用ECC签名交易,用SHA256进行数据摘要与区块链接。
 
- 文件签名:文件内容生成哈希 → 用私钥签名该哈希 → 公钥验证签名是否一致。
 
如你有某个算法或场景想深入探讨(如TLS、区块链、国密SM系列),我也可以继续展开。