01.常见加密算法
1. 对称加密
特点: 加密和解密使用同一密钥
1.1. AES (高级加密标准)
密钥长度: 128位、192位、256位
目前最广泛使用的对称加密算法
应用: HTTPS、VPN、文件加密
| 模式 | 全称 | 安全性 | 并行性 | 填充需求 | 认证功能 | 主要特点与适用场景 |
|---|---|---|---|---|---|---|
| ECB | Electronic Codebook | 低(不推荐) | 支持 | 需要 | 无 | 简单、相同明文块密文相同,易泄密(不要IV) |
| CBC | Cipher Block Chaining | 较高 | 解密可并行 | 需要 | 无 | 常用,需IV,错误传播,适合文件加密 |
| CFB | Cipher Feedback | 较高 | 不支持 | 不需要 | 无 | 流加密,适合实时数据 |
| OFB | Output Feedback | 较高 | 支持 | 不需要 | 无 | 流加密,错误不传播,适合有噪声信道 |
| CTR | Counter | 高 | 支持 | 不需要 | 无 | 支持并行,效率高,需唯一计数器 |
| GCM | Galois/Counter Mode | 很高 | 支持 | 不需要 | 有 | 加密+认证,效率高,现代通信首选 |
| XTS | XEX-based Tweaked Codebook | 高 | 支持 | 不需要 | 无 | 专为磁盘加密设计,支持随机访问 |
| 填充模式 | 描述说明 |
|---|---|
| PKCS#7(最常用) | 不足N字节就填充N个字节的N,如:3个字节 ➔ \x03\x03\x03 |
| PKCS#5 | PKCS#7 的一个子集,仅用于8字节块(AES其实是16字节) |
| Zero Padding | 用\x00填充到块长度;不能用于有结尾0的明文 |
| ANSI X.923 | 用\x00...\x00N,最后一个字节为填充长度 |
| ISO/IEC 7816-4 | 先填一个\x80,其余用\x00 |
| NoPadding | 不填充,但要求输入必须是块大小整数倍(常用于手动处理或CTR等模式) |
1.2. DES/3DES
- DES: 56位密钥(已不安全)
- 3DES: 使用3个密钥的三重DES(逐渐被AES替代)
- 应用: 金融系统中的遗留应用
1.3. ChaCha20
- 流加密算法,速度快
- 常与Poly1305认证算法组合使用
- 应用: TLS 1.3、移动设备通信
2. 非对称加密(公钥加密)
特点: 使用公钥加密,私钥解密
2.1. RSA
- 基于大整数因子分解难题
- 密钥长度: 2048位及以上
- 应用: 数字证书、安全通信、数字签名
2.2. ECC (椭圆曲线加密)
- 基于椭圆曲线离散对数问题
- 更短密钥提供同等安全性
- 应用: TLS、移动设备、IoT设备
2.3. DSA (数字签名算法)
- 专为数字签名设计
- 基于离散对数问题
- 应用: 数字签名、身份验证
3. 哈希算法(单向加密)
特点: 不可逆转换,输出固定长度值
3.1. SHA-256/SHA-3
- 安全哈希算法家族
- 输出256位哈希值
- 应用: 数据完整性、密码存储
3.2. MD5 (已不推荐)
- 输出128位哈希值
- 已证实存在碰撞攻击
- 应用: 文件校验(非安全场景)
4. 密钥交换
4.1. Diffie-Hellman
- 允许双方在不安全信道上建立共享密钥
- 基于离散对数问题
- 应用: TLS/SSL握手阶段
4.2. ECDH (椭圆曲线Diffie-Hellman)
- Diffie-Hellman的椭圆曲线变体
- 更高效、更安全
- 应用: 现代TLS实现
5. 常用混合加密系统
5.1. TLS/SSL
- 使用公钥加密交换会话密钥
- 使用对称加密保护通信数据
- 使用哈希算法验证消息完整性
5.2. PGP/GPG
- 用于电子邮件和文件加密
- 结合非对称和对称加密
- 提供数字签名和验证功能
6. 常用加密模式
6.1. CBC (密码块链接)
块加密模式,每个块与前一块相关
需要初始化向量(IV)
6.2. GCM (伽罗瓦/计数器模式)
提供认证和加密(AEAD)
高效、安全,广泛使用
6.3. CTR (计数器模式)
将块密码转为流密码
支持并行加密
