加密与签名技术之总览介绍
第一部分:加密技术
第二部分:签名技术
第三部分:应用与实践
快速导航
按场景选择
按技术分类
目录
-
对称加密算法详解
- AES (Advanced Encryption Standard)
- DES (Data Encryption Standard)
- 3DES (Triple DES)
- Blowfish
- Twofish
- ChaCha20
- SM4 (国密算法)
-
非对称加密算法详解
- RSA
- ECC (Elliptic Curve Cryptography)
- ElGamal
- SM2 (国密算法)
- Diffie-Hellman 密钥交换
-
哈希算法详解
- MD5
- SHA-1
- SHA-2 系列
- SHA-3 系列
- BLAKE2
- SM3 (国密算法)
-
密钥派生与密码学随机数
- PBKDF2
- bcrypt
- scrypt
- Argon2
- 密码学随机数生成器
-
数字签名算法详解
- RSA签名
- DSA (Digital Signature Algorithm)
- ECDSA (Elliptic Curve DSA)
- EdDSA
- SM2签名 (国密算法)
-
消息认证码详解
-
应用场景与选择指南
- 数据存储加密场景
- 网络传输加密场景
- 身份认证场景
- API安全场景
- 区块链与加密货币场景
- 选择决策树
-
性能对比分析
- 加密算法性能对比
- 签名算法性能对比
- 哈希算法性能对比
- 性能优化建议
技术选型快速参考
加密算法选择矩阵
| 场景 | 推荐算法 | 替代方案 | 原因 |
|---|
| 文件加密 | AES-256 | ChaCha20 | AES硬件加速广泛支持 |
| HTTPS/TLS | AES-GCM | ChaCha20-Poly1305 | 性能与安全性平衡 |
| 数据库加密 | AES-256-CBC | AES-256-GCM | 兼容性和性能 |
| 密钥交换 | ECDH | RSA | ECC性能更优 |
| 短消息加密 | RSA-2048 | ECC P-256 | RSA更成熟 |
| 区块链 | ECDSA | EdDSA | 广泛支持 |
| 密码存储 | Argon2 | bcrypt | 抗GPU攻击能力最强 |
签名算法选择矩阵
| 场景 | 推荐算法 | 替代方案 | 原因 |
|---|
| 数字证书 | RSA-2048 | ECDSA P-256 | 广泛兼容性 |
| API签名 | HMAC-SHA256 | HMAC-SHA512 | 性能与安全性平衡 |
| 区块链 | ECDSA | EdDSA | 行业标准 |
| 代码签名 | RSA-4096 | ECDSA P-384 | 最高安全性 |
| JWT | HMAC-SHA256 | RSA签名 | 简单场景用HMAC |
安全等级建议
低安全需求
- 加密:AES-128
- 签名:RSA-1024 (已不推荐) 或 HMAC-SHA256
- 哈希:SHA-256
中等安全需求
- 加密:AES-256
- 签名:RSA-2048 或 ECDSA P-256
- 哈希:SHA-256 或 SHA-384
高安全需求
- 加密:AES-256-GCM 或 ChaCha20-Poly1305
- 签名:RSA-4096 或 ECDSA P-384 或 EdDSA
- 哈希:SHA-384 或 SHA-512
极高安全需求(长期存储)
- 加密:AES-256-GCM + 密钥轮换
- 签名:RSA-4096 或 ECDSA P-521
- 哈希:SHA-512
注意事项
⚠️ 重要提醒:
- 不再使用的算法:MD5、SHA-1、DES、RC4 已不再安全,不应在新项目中使用
- 密钥管理:算法的安全性依赖于密钥管理,密钥必须安全存储和传输
- 实现细节:永远不要自己实现加密算法,使用经过验证的库(如Java的JCA/JCE)
- 随机数生成:使用密码学安全的随机数生成器(SecureRandom)
- 时间安全:注意防范时序攻击,使用常数时间比较