在现代软件工程与系统架构中,密码学算法是构筑网络信任、数据安全与身份防伪的底层支柱。密码系统围绕四大核心安全目标构建:机密性(防止泄密)、完整性(防止篡改)、身份认证(确认身份)与不可否认性(防止抵赖)。
本速查表以高密度表格形式系统梳理现代加解密算法体系,涵盖对称加密、非对称加密、散列哈希与密码专用慢哈希、数字签名、密钥交换、国密算法对照以及工程避坑法则,便于日常架构设计与接口安全速查。
🔗 相关矩阵速查:AI 核心算法全景速查表 · Python 速查表 · Claude Code 常用命令速查表
1. 现代密码学 5 大体系对比总览
| 体系分类 | 核心作用与数学本质 | 密钥特征 | 计算性能 | 是否可逆 | 典型工程代表算法 | 核心应用场景 |
|---|---|---|---|---|---|---|
| 对称加密 (Symmetric) | 明文与密文双向变换,加解密使用同一把共享密钥 | 共享单密钥(必须安全分发保管) | 极快 (硬件指令集加速) | 是 | AES-GCM、ChaCha20、SM4 | 大规模数据传输、数据库落库加密、磁盘存储加密 |
| 非对称加密 (Asymmetric) | 利用数学单向陷门函数(大素数分解、椭圆曲线离散对数),公钥加密私钥解密 | 公钥(公开)+ 私钥(私密保管) | 较慢 (计算密集型) | 是 | RSA-4096、ECC (P-256)、SM2、ElGamal | 敏感会话密钥分发、小数据信封加密 |
| 单向散列哈希 (Hash) | 将任意长度输入映射为固定长度摘要,具备雪崩效应与抗碰撞性 | 无密钥(可配合加盐 Salt) | 极快 | 否 | SHA-256、SHA-3、SM3、BLAKE2 | 文件完整性校验、区块链哈希指针、数字证书指纹 |
| 消息认证码 & AEAD | 在提供数据机密性的同时,生成认证标签(Tag)校验数据完整性与来源真实性 | 共享对称密钥 + Nonce (一次性随机数) | 极快 | 加密部分可逆 | AES-GCM、ChaCha20-Poly1305、HMAC-SHA256 | HTTPS/TLS 1.3 会话通信、API 接口防篡改校验 |
| 数字签名与密钥交换 | 私钥签名、公钥验签;或双端在不安全信道协商出安全的对称会话密钥 | 签名方持私钥,验证方持公钥;交换需各自生成临时公私钥对 | 中等 | 签名本身不可逆 | 签名:Ed25519、ECDSA、RSA-PSS 交换:ECDHE、X25519、SM2 密钥协商 | 软件分发防伪签名、Git Commit 签名、TLS 握手前向保密 |
2. 对称加密与分组工作模式速查
2.1 现代主流对称加密算法对比
| 算法名称 | 算法类型 | 标准密钥长度 | 安全评级 | 硬件加速支持 | 工业实践建议 |
|---|---|---|---|---|---|
| AES (Advanced Encryption Standard) | 分组密码 (128-bit 块) | 128 / 192 / 256 bit | ★★★★★ (黄金标准) | 现代 CPU 均原生支持 AES-NI 指令集 | 绝大多数场景的首选标准,推荐优先使用 AES-256-GCM |
| ChaCha20 | 流密码 (Stream Cipher) | 256 bit | ★★★★★ (顶级推荐) | 无需专用硬件指令集,在 ARM/移动端极快 | 配合 Poly1305 使用;移动端设备、老旧无 AES-NI 芯片首选 |
| SM4 (商密四号) | 分组密码 (128-bit 块) | 128 bit | ★★★★★ (国标合规) | 近代国产及主流 CPU 均已集成国密指令集 | 中国政企、金融、信创等强合规要求的业务系统首选 |
| 3DES (Triple-DES) | 分组密码 (64-bit 块) | 112 / 168 bit | ★★☆☆☆ (已淘汰) | 慢 | 存在 Sweet32 碰撞漏洞,已被 NIST 彻底移出标准,仅存留于极老金融系统 |
| DES | 分组密码 (64-bit 块) | 56 bit | ❌ 不安全 (已彻底破解) | - | 56位密钥可在数小时内暴力破解,严禁在任何新系统中使用 |
2.2 分组工作模式优劣与选型禁忌
分组密码本身只能加密固定大小(如 128 位)的数据块,处理长数据必须配合工作模式:
| 工作模式 | 工作机制 | 是否提供完整性校验 (AEAD) | 是否支持并行计算 | 安全评级 | 适用场景与避坑要点 |
|---|---|---|---|---|---|
| GCM (Galois/Counter Mode) | CTR 计数器加密 + GMAC 认证 | 是 (原生 AEAD) | 支持 (加解密全并行) | ★★★★★ (现代首选) | 现代网络协议(TLS 1.3)与系统落盘加密第一首选。注意:同一密钥下 Nonce 绝不可重复使用! |
| XTS | 基于 XEX 的带密文窃取增强模式 | 否 | 支持 | ★★★★★ (磁盘专用) | 物理全盘/分区加密事实标准(如 Linux LUKS、macOS FileVault、Windows BitLocker) |
| CBC (Cipher Block Chaining) | 前一密文块与当前明文异或再加密 | 否 (需额外搭配 HMAC) | 仅解密支持并行 | ★★★☆☆ (逐渐被替代) | 传统老协议常见,强依赖随机初始化向量 (IV);极易遭受填充提示攻击 (Padding Oracle Attack) |
| CTR (Counter Mode) | 将计数器加密后与明文异或 (转为流密码) | 否 | 支持 | ★★★★☆ | 高并发吞吐场景适用;无需 Padding,但必须保证 Counter/Nonce 永远不重复 |
| ECB (Electronic Codebook) | 每个数据块完全独立、使用相同密钥加密 | 否 | 支持 | ❌ 严禁使用 | 完全泄露明文数据模式特征(经典企鹅轮廓可见漏洞),任何生产环境一律禁止使用 |
3. 散列哈希与密码存储专用算法速查
3.1 通用单向散列算法(数据校验与指纹)
用于文件校验、数据签名摘要与数字指纹,不可用于直接存储用户登录密码:
| 算法家族 | 输出长度 | 碰撞抗性 (Collision Resistance) | 安全评级 | 推荐应用场景 |
|---|---|---|---|---|
| SHA-256 / SHA-512 (SHA-2) | 256 / 512 bit | 极强 (未被攻破) | ★★★★★ | 互联网安全事实标准、TLS 证书签名、区块链工作量证明 (PoW) |
| SHA-3 (Keccak 架构) | 224 / 256 / 384 / 512 bit | 极强 (基于海绵结构,抗长度扩展攻击) | ★★★★★ | 对抗长度扩展攻击场景、以太坊底层哈希、高安全标准系统 |
| SM3 (商密三号) | 256 bit | 极强 (对标 SHA-256) | ★★★★★ | 中国国密合规场景、金融支付、政务电子凭证、数字身份认证 |
| BLAKE2b / BLAKE3 | 可变长度 (默认 256/512 bit) | 极强 | ★★★★★ | 纯软件运算速度超越 MD5 与 SHA-256 数倍,极致性能校验场景 |
| SHA-1 | 160 bit | 弱 (已被 Google 团队攻破碰撞) | ❌ 已废弃 | 绝不可用于数字签名与安全校验;仅部分遗留系统用于 Git Object ID |
| MD5 | 128 bit | 极弱 (几秒内即可人工构造碰撞) | ❌ 已废弃 | 严禁用于任何安全领域;仅偶尔用于非安全场景下的文件快速去重哈希 |
3.2 密码存储专用“慢哈希”算法(防暴力破解)
普通哈希(如 SHA-256)设计初衷是追求极致的计算速度,若用于存密码,黑客可利用 GPU/ASIC 矿机以每秒数百亿次的速度暴力破解或碰撞彩虹表。用户密码存储必须使用具备内存硬度 (Memory-Hard) 与高计算开销的慢哈希:
| 算法名称 | 算法特点 | 核心抵抗能力 | 推荐工程配置参数 | 权威推荐评级 |
|---|---|---|---|---|
| Argon2id | 现代混合型密码散列算法,结合时间与内存硬度 | 抗 GPU 暴力穷举、抗 ASIC 定制芯片、抗侧信道侧信道攻击 | 内存 64MB,迭代次数 3,并行线程 4 | ★★★★★ (密码哈希金牌首选,Password Hashing Competition 冠军) |
| bcrypt | 基于 Blowfish 算法演化,自适应迭代计算成本 | 抗 GPU 暴力碰撞,自带随机 128-bit Salt | 成本因子 cost 推荐设为 12~14 | ★★★★★ (工业生产应用最广泛、最稳健标准) |
| scrypt | 专门设计高内存开销阻断硬件并行 ASIC 破解 | 显著消耗海量内存带宽 | (N=32768, r=8, p=1) | ★★★★☆ (加密货币钱包密钥派生标准) |
| PBKDF2 | 基于 HMAC 的多轮迭代伪随机密钥派生函数 | 纯计算型,抗 ASIC 性能弱于 Argon2 | 迭代次数推荐 (\ge 600,000) 次 (SHA-256) | ★★★☆☆ (各大合规机构认可的传统保底标准) |
4. 非对称加密、数字签名与密钥交换速查
4.1 主流非对称算法与数字签名对比
| 算法名称 | 数学原理基础 | 推荐安全密钥长度 | 签名/验签速度 | 密钥与密文体积 | 典型适用场景 |
|---|---|---|---|---|---|
| RSA (RSA-PSS) | 大整数素因子分解难题 | (\ge 2048) bit (推荐 3072/4096) | 验签极快,签名与解密较慢 | 很大 (2048 位密钥生成约 256 字节) | 兼容性要求极高的旧系统、传统 Web SSL 证书、API 签名 |
| ECDSA (椭圆曲线数字签名) | 椭圆曲线离散对数难题 (ECDLP) | 256 bit (P-256) 对标 RSA-3072 | 签名与验签速度均衡 | 小 (显著节省网络传输带宽) | 移动设备、现代 TLS 证书、比特币/以太坊公链交易签名 |
| Ed25519 (EdDSA 曲线) | Twisted Edwards 曲线 (Curve25519) | 256 bit (等效 RSA-3072 安全度) | 极快且常数时间执行 (抗侧信道) | 极小 (公钥 32 字节,签名 64 字节) | 现代系统首选:SSH 登录公钥、Git 提交签名、安全通信 |
| SM2 (商密二号) | 基于 256 位椭圆曲线密码学 | 256 bit (安全性等效于 ECC P-256) | 较快 (硬件优化成熟) | 小 | 中国国内银行金融系统、电子政务、信创资质与合规认证 |
4.2 密钥交换与前向安全性 (Forward Secrecy)
| 协议 / 算法 | 协商机制 | 是否具备完全前向保密 (PFS) | 核心运作原理与优势 |
|---|---|---|---|
| ECDHE (临时椭圆曲线 DH) | 双方各自生成临时的临时公私钥对进行交换 | 具备 (现代标准) | 即使服务器长期的私钥在多年后遭到泄露,黑客也无法逆向解密过去历史记录的密文,TLS 1.3 强制要求使用临时模式 |
| X25519 | 基于 Curve25519 的极速 ECDH 密钥交换 | 具备 | 代码极度紧凑、无特定弱曲线陷阱、运行速度极快,现代 WireGuard 与 TLS 首选 |
| SM2 密钥交换 | 基于 SM2 椭圆曲线的三步/两步交互协议 | 具备 (结合临时公私钥) | 中国商密 SSL 规范规定的标准会话密钥协商算法 |
| 静态 RSA 密钥协商 | 客户端生成对称预主密钥直接用服务端公钥加密传输 | ❌ 不具备 (严重安全隐患) | 已遭 TLS 1.3 废黜:一旦服务器私钥被窃取,过去存储的所有流量历史录包全部被批量明文解密 |
5. 国际主流标准算法 vs 中国国密算法全景对照
在政企、金融科技与信创合规开发中,经常需要执行国密(SM 算法族)改造对齐:
| 密码功能板块 | 国际主流事实标准 (NIST / IETF) | 中国商用密码标准 (GM/T 国密) | 安全性与性能等效关系 | 典型对标业务场景 |
|---|---|---|---|---|
| 非对称加密 / 数字签名 | RSA-2048 / RSA-4096 ECDSA (P-256) Ed25519 | SM2 (基于 256 位椭圆曲线) | SM2 在 256 位密钥长度下,安全性超越 RSA-2048,性能与国际 ECC P-256 相当 | 身份鉴权、SSL 双向证书、开放平台 API 签名 |
| 单向密码杂凑 / 哈希 | SHA-256 SHA-512 | SM3 (256 位输出) | 结构类似 SHA-256,但增加了更复杂的压缩函数步数与设计,抗差分分析能力极强 | 数据完整性校验、区块链哈希上链、数据防伪 |
| 对称分组加密 | AES-128 AES-256 | SM4 (128 位密钥与分组) | 算法安全性与 AES-128 处于同一水平,配合 GCM 模式支持安全 AEAD 认证加密 | 数据库敏感列加密、金融卡交易加密、文件加密 |
| 序列 / 流密码 | ChaCha20 (取代 RC4) | ZUC (祖冲之算法) | 中国自主设计的高性能流密码,被 3GPP 采纳为 4G/5G 移动通信国际安全标准 | 移动蜂窝网络通信加密、实时高速数据流混淆 |
| 标识密码体系 (IBC) | 国际 Identity-Based Encryption | SM9 (基于双线性对 IBC) | 无需繁琐申请 CA 证书,直接将用户的手机号、邮箱地址作为公钥加密 | 物联网设备鉴权、轻量级终端无证书加密通信 |
6. 现代工程选型决策矩阵与安全高危避坑法则
6.1 典型业务场景技术选型对照表
| 业务开发场景 | 首选推荐算法方案 | 次选/兼容备选方案 | 为什么这么选? |
|---|---|---|---|
| 用户注册登录密码存储 | Argon2id | bcrypt (Cost=12) | 具备自适应内存与计算硬度,彻底粉碎 GPU/ASIC 离线爆破彩虹表 |
| 数据库个人隐私敏感字段 (手机号/身份证) | AES-256-GCM | SM4-GCM (国密合规) | 认证加密防篡改,单条数据独立 Nonce,硬件加速性能开销极低 |
| 企业高并发服务端 API 接口防篡改 | HMAC-SHA256 | SM3-HMAC | 对称消息认证码计算快、吞吐高,毫秒级响应海量高并发请求 |
| 开放平台多方合作开放接口验签 | Ed25519 | RSA-PSS (3072-bit) | 跨机构无需信任共享密钥,Ed25519 体积极小且签名验签速度飞快 |
| 操作系统物理磁盘 / 分区加密 | AES-256-XTS | SM4-XTS | 专门针对块存储设备扇区设计的加密模式,消除块位置关联缺陷 |
| 局域网/跨数据中心高效安全通道 | ChaCha20-Poly1305 | AES-256-GCM | 即使在无硬件加速的低端设备或虚拟机环境依然保持极低延迟 |
6.2 密码学工程安全避坑 8 大铁律
[!CAUTION] 密码学领域有句名言:“千万不要自己发明密码算法(Don’t roll your own crypto)”。绝大多数安全事故源于算法误用与实现疏忽:
- ❌ 严禁使用 ECB 模式:任何场景都不可选用 AES-ECB,明文结构与轮廓在密文中一览无余;
- ❌ 严禁 Nonce / IV 重复使用:在 GCM 或 ChaCha20 等流式/认证模式中,若同一密钥下复用了相同 Nonce,攻击者可直接数学推导出明文甚至认证密钥;
- ❌ 严禁使用普通哈希(MD5/SHA-256)存储用户密码:必须强制使用自带加盐与内存硬度的 Argon2id 或 bcrypt;
- ❌ 彻底摒弃破损算法:生产环境严禁新出现 MD5、SHA-1、DES、3DES 及 RC4;
- ❌ 严禁伪随机数生成器:生成私钥、Salt、Token、Nonce 必须调用操作系统提供的密码学安全伪随机数生成器(CSPRNG)(如 Linux
/dev/urandom、Node.jscrypto.randomBytes、JavaSecureRandom),严禁使用Math.random(); - ⚠️ 警惕填充提示攻击 (Padding Oracle):使用 CBC 模式时必须先使用 HMAC 校验密文再解密(Encrypt-then-MAC),或者无脑升级为原生 AEAD (GCM);
- ⚠️ 防范时间侧信道攻击 (Timing Attack):校验密码哈希或签名时,不可使用常规字符串比较(遇到不匹配字符直接退出),必须使用常数时间比较函数(如
crypto.timingSafeEqual); - ⚠️ 密钥与代码彻底分离:密钥严禁直接 Hardcode 写入 Git 仓库,必须通过环境变量或专业密钥管理系统(AWS KMS、HashiCorp Vault、阿里云 KMS)动态注入与定期轮转。