为了让你更清晰地掌握目前信息安全领域的核心技术,我将这些主流算法分为三大类进行详细解析:哈希算法(数据指纹)、对称加密(一把钥匙开一把锁)和非对称加密(公钥与私钥)。
以下是目前工业界最主流、最常用的算法及其具体细节:
📋 一、哈希算法(Hash Algorithms)
哈希算法用于生成数据的"指纹",特点是不可逆(无法从指纹还原数据)。
🔥 1. SHA-2 系列(目前的绝对主流)
- 代表算法:SHA-256(最常用)、SHA-512。
- 具体特性:
- 输出长度:SHA-256 输出 256 位(32字节),通常表示为 64 位的 16 进制字符串。
- 安全性:目前全球最广泛接受的标准,抗碰撞性极强,尚未发现有效的攻击方法。
- 应用场景:SSL/TLS 证书、区块链(如比特币)、软件发布校验、数字签名。
- 注意:SHA-1(160位)已被证实存在碰撞漏洞,已被淘汰,不应再用于安全场景。
🛡️ 2. 国密 SM3(中国标准)
- 具体特性:
- 输出长度:256 位,与 SHA-256 长度一致。
- 安全性:由中国国家密码管理局发布,安全性设计上与 SHA-256 相当或略高,主要用于抵御针对 SHA 系列的特定攻击。
- 应用场景:中国政府、金融、政务系统的数据完整性校验,配合 SM2/SM4 算法使用。
🗝️ 3. 专用密码哈希算法(用于存密码)
- 代表算法:bcrypt、Argon2、scrypt、PBKDF2。
- 具体特性:
- 设计哲学:故意设计得很慢,消耗大量内存或 CPU。
- 核心优势:防暴力破解。虽然 SHA-256 很快,但这些算法通过迭代计算(如 Argon2)让黑客无法使用显卡集群快速穷举。
- 应用场景:存储用户登录密码(这是存储密码的最佳实践,而不是直接用 SHA-256)。
🔒 二、对称加密算法(Symmetric Encryption)
加密和解密使用同一个密钥。特点是速度快,适合加密大量数据。
🏆 1. AES(Advanced Encryption Standard)
- 具体参数:支持 128位、192位、256位 三种密钥长度。分组长度固定为 128 位。
- 工作模式:
- CBC(常用,需初始化向量 IV)。
- GCM(推荐,同时提供加密和认证,用于 TLS 1.3)。
- 应用场景:Wi-Fi 加密(WPA2/WPA3)、数据库字段加密、文件加密(如 WinZip)、TLS 握手后的会话加密。
🇨🇳 2. 国密 SM4
- 具体特性:
- 分组长度和密钥长度均为 128 位。
- 原名 SMS4,是中国国家标准的分组密码算法。
- 应用场景:中国国内的无线局域网(WAPI)、金融 IC 卡、政务云数据加密。
📉 3. 3DES(Triple DES)
- 具体特性:对数据执行三次 DES 加密操作。
- 现状:正在被淘汰。速度慢(约为 AES 的 1/3),安全性不如 AES。目前仅在一些老旧的金融系统(如老式 POS 机)中为了兼容性而存在。
🔑 三、非对称加密算法(Asymmetric Encryption)
使用一对密钥(公钥和私钥)。公钥加密,私钥解密;或者私钥签名,公钥验证。特点是安全性高(解决密钥分发问题),但速度慢。
🗿 1. RSA(最经典、最普及)
- 具体参数:密钥长度通常为 2048位 或 4096位。
- 数学原理:基于"大整数分解难题"(将两个大质数的乘积还原成原来的质数非常困难)。
- 应用场景:
- 数字签名:软件发布签名、SSL 证书签名。
- 密钥交换:在 TLS 握手初期,用 RSA 加密对称密钥(虽然现在更多用 ECDHE 做密钥交换)。
🚀 2. ECC(Elliptic Curve Cryptography)
- 具体参数:常用曲线如 P-256(也叫 secp256r1),密钥长度仅 256 位。
- 核心优势:短小精悍。256 位的 ECC 安全性相当于 3072 位的 RSA,但运算速度更快,占用带宽更少。
- 应用场景:移动支付(Apple Pay)、区块链(比特币/以太坊使用的是 secp256k1 曲线)、物联网设备(资源受限)。
🇨🇳 3. 国密 SM2
- 具体特性:基于椭圆曲线的公钥密码算法。
- 对比:相比 RSA,SM2 的签名更短(比 RSA 短约 60%),运算速度更快。
- 应用场景:中国电子政务、税务 UKey、银行数字证书。
📊 总结对比表
为了方便你记忆,我整理了一个核心算法速查表:
算法类型 国际主流算法 中国国密算法 核心用途
哈希 (Hash) SHA-256 SM3 数据完整性校验、数字签名摘要
对称加密 AES-128/256 SM4 文件加密、数据库加密、通信会话加密
非对称加密 RSA-2048 / ECC SM2 数字证书、身份认证、加密传输对称密钥
💡 给你的建议:
- 如果你在开发面向全球的应用:优先使用 AES + RSA + SHA-256 组合。
- 如果你在开发国内政务或金融应用:必须使用 SM2 + SM3 + SM4 组合。
- 如果你需要存储用户密码:请使用 Argon2 或 bcrypt,不要直接用 SHA-256。