常见加密算法

Pasted image 20250513221445.png

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 (计数器模式)

将块密码转为流密码
支持并行加密