密码算法是现代信息安全的核心,广泛用于加密通信、身份认证、数据完整性校验等,这里主要介绍密码学通用的三个分类。
一、密码算法主流分类(按密钥机制与功能)
这是最常见的分类方式,分为三大类
1. 对称加密算法
特点
- 加解密使用同一密钥
- 速度快、效率高
- 密钥分发困难(需安全通道)
代表算法
| 算法 | 类型 | 状态 |
|---|---|---|
| AES | 块密码 | 推荐,广泛使用 |
| SM4 | 块密码 | 国密标准 |
| ChaCha20 | 流密码 | 快速,适用于移动设备 |
| RC4 | 流密码 | 已淘汰 |
| DES | 块密码 | 已不安全 |
| 3DES | 块密码 | 逐步淘汰(NIST已禁用) |
1.1 工作模式(ECB、CBC、GCM)
对称"块加密算法"需要配合工作模式来处理多块数据。
| 模式 | 安全性 | 并行支持 | 认证加密( AEAD ) | 用途 |
|---|---|---|---|---|
| ECB | 不安全 | 是 | 否 | 演示 |
| CBC | 安全 | 否 | 否 | 文件、老 TLS |
| GCM | 安全 | 是 | 是 | HTTPS、TLS 1.3 |
工作模式结构图(简化版)
1.1.1. ECB(Electronic Codebook)模式:电子密码本

- 每个明文块独立加密,不依赖其他块。
- 同样的明文块 → 相同的密文块(无随机性)。
优点: 实现简单、支持并行处理。
缺点: 易泄露数据模式,不安全。
1.1.2. CBC(Cipher Block Chaining)模式:密码块链接

- 每个明文块在加密前先与上一个密文块异或(XOR)。
- 第一个块使用随机的初始向量(IV)参与运算。
优点: 增加随机性,避免明文模式泄露。
缺点: 加密过程不能并行,因为每块依赖前一块。
更安全,适用于文件加密、旧版 TLS 等场景。
1.1.3. GCM(Galois/Counter Mode):计数器模式 + 完整性认证

- 每个明文块与计数器加密值异或(CTR 模式),计数器每块递增。
- 同时使用 Galois 哈希函数对密文和附加数据生成身份验证标签(Tag)。
优点:
支持 **并行加密、**内建 **完整性验证(AEAD).**安全性高,适合现代通信协议
缺点: 实现稍复杂,对计数器唯一性要求严格。
推荐用于现代应用: HTTPS、TLS 1.3、IPSec等。
2. 非对称加密算法
特点
- 使用一对密钥(公钥 / 私钥)
- 用于加密、签名、密钥交换
- 适合公开密钥交换和身份认证
代表算法
| 功能类型 | 代表算法 | 说明 |
|---|---|---|
| 加密 | RSA、SM2(加密) | SM2 是国密算法,支持加密 |
| 签名 | ECDSA、EdDSA、SM2(签名) | 数字签名,确保身份和不可抵赖性 |
| 密钥交换 | DH、ECDH、SM2(密钥协商) | 建立对称密钥 |
SM2 是一个完整的公钥密码体系,支持加密、签名、密钥协商。
3. 摘要算法
特点
- 无密钥、单向、不可逆
- 将任意长度输入映射为固定长度输出
- 提供完整性验证和数据指纹
代表算法
| 算法 | 状态 | 特点 |
|---|---|---|
| SHA-256 | 推荐 | 标准哈希函数 |
| SHA-3 | 推荐 | 基于 Keccak,抗量子结构 |
| SM3 | 国密标准 | 国密摘要算法 |
| MD5 / SHA-1 | 不安全 | 已被攻破,仅用于非安全应用 |
| BLAKE3 | 推荐 | 高性能、现代应用友好 |
- 哈希函数并不保证"唯一性",但提供"近似唯一的指纹"。
- 抗碰撞性、一致性、原像抗性是关键安全属性。
4. 密钥派生函数 & 密码哈希函数(独立分类)
这些算法一般基于哈希函数,可以根据用途和安全设计目标不同,单独分类。
| 类型 | 代表算法 | 用途 |
|---|---|---|
| 密码哈希函数 | bcrypt、Argon2 | 用于密码存储,抗暴力破解 |
| KDF | PBKDF2、HKDF | 从主密钥派生不同用途的密钥 |
密码哈希函数通常设计为"慢"和"带盐",以防止彩虹表攻击和爆破。
二、其他密码算法分类方法
1. 按用途分类
| 用途 | 示例 |
|---|---|
| 加密 | AES、SM4、RSA |
| 签名 | RSA签名、ECDSA、SM2签名 |
| 完整性校验 | SHA-256、SM3、HMAC |
| 密钥派生 | PBKDF2、Argon2、HKDF |
2. 按是否可逆
| 类型 | 示例 |
|---|---|
| 可逆算法 | AES、RSA、SM4 |
| 不可逆 | SHA-256、SM3、bcrypt |
3. 按数学基础
| 数学基础 | 示例算法 |
|---|---|
| 大整数分解 | RSA |
| 椭圆曲线离散对数 | ECC、SM2、ECDSA |
| 离散对数问题 | DSA、DH |
| 哈希基础 | SHA-3、SPHINCS+ |
| 格理论(后量子) | Kyber(KEM)、Dilithium(签名) |
4. 按抗量子能力
| 类型 | 示例算法 | 抗量子能力 |
|---|---|---|
| 传统密码 | RSA、ECC | 部分可破解 |
| AES-256 | 对称加密推荐强度 | 抗量子 |
| PQC 算法 | Kyber、Dilithium | NIST 标准 |
数字签名 ≠ 加密
签名和加密是两种不同的密码学原语,具有不同的安全目标和使用规范。不要将签名视为加密,也不要混用签名密钥与加密密钥。
5. 密码算法整体对比表
| 类别 | 是否使用密钥 | 是否可逆 | 功能 | 示例算法 |
|---|---|---|---|---|
| 对称加密 | 是 | 是 | 保密性(含 AEAD 模式如 GCM) | AES、ChaCha20、SM4 |
| 非对称加密 | 是 | 是 | 保密性、签名 | RSA、SM2、ECC |
| 摘要算法 | 否 | 否 | 完整性校验 | SHA-256、SHA-3、SM3 |
| 密码哈希函数 | 否(使用盐) | 否 | 密码保护 | bcrypt、Argon2 |
| KDF | 是 | 否 | 密钥扩展 | PBKDF2、HKDF |
| 数字签名(非对称) | 是 | 否 | 身份认证 | ECDSA、SM2(签名)、Ed25519 |
三、总结
- "对称 / 非对称 / 哈希" 是密码学最主流的三大类。
- 密码哈希、KDF 因为应用需求被单独分类。
- 工作模式(ECB、CBC、GCM 等)对实际加密效果有很大的影响。
- 实际系统推荐使用混合加密结构(非对称加密传密钥 + 对称加密传数据 + HMAC/SHA 传完整性)。