01.常见加密算法

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

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