密码学算法分类指南

密码算法是现代信息安全的核心,广泛用于加密通信、身份认证、数据完整性校验等,这里主要介绍密码学通用的三个分类。


一、密码算法主流分类(按密钥机制与功能)

这是最常见的分类方式,分为三大类


1. 对称加密算法

特点

  1. 加解密使用同一密钥
  2. 速度快、效率高
  3. 密钥分发困难(需安全通道)

代表算法

算法 类型 状态
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. 每个明文块独立加密,不依赖其他块。
  2. 同样的明文块 → 相同的密文块(无随机性)。

优点: 实现简单、支持并行处理。

缺点: 易泄露数据模式,不安全。

1.1.2. CBC(Cipher Block Chaining)模式:密码块链接
  1. 每个明文块在加密前先与上一个密文块异或(XOR)
  2. 第一个块使用随机的初始向量(IV)参与运算。

优点: 增加随机性,避免明文模式泄露。

缺点: 加密过程不能并行,因为每块依赖前一块。

更安全,适用于文件加密、旧版 TLS 等场景。

1.1.3. GCM(Galois/Counter Mode):计数器模式 + 完整性认证
  1. 每个明文块与计数器加密值异或(CTR 模式),计数器每块递增。
  2. 同时使用 Galois 哈希函数对密文和附加数据生成身份验证标签(Tag)

优点:

支持 **并行加密、**内建 **完整性验证(AEAD).**安全性高,适合现代通信协议

缺点: 实现稍复杂,对计数器唯一性要求严格。

推荐用于现代应用: HTTPS、TLS 1.3、IPSec等。


2. 非对称加密算法

特点

  1. 使用一对密钥(公钥 / 私钥)
  2. 用于加密、签名、密钥交换
  3. 适合公开密钥交换和身份认证

代表算法

功能类型 代表算法 说明
加密 RSA、SM2(加密) SM2 是国密算法,支持加密
签名 ECDSA、EdDSA、SM2(签名) 数字签名,确保身份和不可抵赖性
密钥交换 DH、ECDH、SM2(密钥协商) 建立对称密钥

SM2 是一个完整的公钥密码体系,支持加密、签名、密钥协商。


3. 摘要算法

特点

  • 无密钥、单向、不可逆
  • 将任意长度输入映射为固定长度输出
  • 提供完整性验证和数据指纹

代表算法

算法 状态 特点
SHA-256 推荐 标准哈希函数
SHA-3 推荐 基于 Keccak,抗量子结构
SM3 国密标准 国密摘要算法
MD5 / SHA-1 不安全 已被攻破,仅用于非安全应用
BLAKE3 推荐 高性能、现代应用友好
  1. 哈希函数并不保证"唯一性",但提供"近似唯一的指纹"。
  2. 抗碰撞性、一致性、原像抗性是关键安全属性。

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

三、总结

  1. "对称 / 非对称 / 哈希" 是密码学最主流的三大类。
  2. 密码哈希、KDF 因为应用需求被单独分类。
  3. 工作模式(ECB、CBC、GCM 等)对实际加密效果有很大的影响。
  4. 实际系统推荐使用混合加密结构(非对称加密传密钥 + 对称加密传数据 + HMAC/SHA 传完整性)。
相关推荐
代码游侠10 分钟前
学习笔记——线程控制 - 互斥与同步
linux·运维·笔记·学习·算法
yaoh.wang14 分钟前
力扣(LeetCode) 66: 加一 - 解法思路
python·程序人生·算法·leetcode·面试·职场和发展·跳槽
wanderist.36 分钟前
2025年蓝桥杯省赛C++大学A组
c++·算法·蓝桥杯
啊董dong1 小时前
noi-2025年12月16号作业
数据结构·c++·算法·noi
white-persist1 小时前
【攻防世界】reverse | simple-check-100 详细题解 WP
c语言·开发语言·汇编·数据结构·c++·python·算法
长安er1 小时前
LeetCode 01 背包 & 完全背包 题型总结
数据结构·算法·leetcode·动态规划·背包问题
小南家的青蛙1 小时前
LeetCode第2658题 - 网格图中鱼的最大数目
算法·leetcode·职场和发展
ZHang......1 小时前
LeetCode 1114. 按序打印
java·开发语言·算法
仰泳的熊猫1 小时前
1083 List Grades
数据结构·c++·算法·pat考试
Tan_Zhixia2 小时前
时间复杂度判断
数据结构·c++·算法