密码学基础速查:哈希 / 对称 / 非对称
admin
2026-10-27 07:16
127人看过
免费
# 密码学基础速查:哈希 / 对称加密 / 非对称加密
> 一句话区分:
> **哈希:单向摘要,不可解密;对称:同一密钥加密解密;非对称:公私钥一对,公钥加密、私钥解密。**
## 一、哈希(Hash,消息摘要)
### 核心特性
1. **单向不可逆**:只能原文算出摘要,**不能从摘要反推原文**
2. 定长输出:无论输入长短,输出固定长度字符串
3. 雪崩效应:原文改1个字符,哈希结果完全不同
4. 抗碰撞:很难找到两段不同原文,哈希值相同
### 常见算法
- 不安全(禁止使用):MD5、SHA1(存在碰撞攻击)
- 推荐:SHA256、SHA3、BLAKE2b
> ⚠️ 哈希 ≠ 加密!**没有解密过程**。
### 典型用途
1. 用户密码存储:密码+随机盐 → 计算哈希存入数据库(**不能直接存MD5,必须加盐**)
2. 文件完整性校验:校验文件是否被篡改
3. 数字签名的前置:先对消息哈希,再对哈希签名
### 易错点
- ❌ 直接对密码做MD5:彩虹表可破解;**必须加盐(salt)**
- 加盐公式:`hash(密码 + 随机盐)`,盐值和哈希一起入库,盐不需要保密
## 二、对称加密(Symmetric Encryption)
### 核心特性
- **加密、解密使用同一个密钥**
- 加解密速度快,适合加密**大数据**(文件、数据流)
- 痛点:密钥分发困难;双方如何安全传递密钥是最大难题
### 常见算法
- AES(首选,AES-128/AES-256)
- 淘汰:DES、3DES
### 关键概念
- IV(初始化向量):随机、不可重复,不需要保密;**相同密钥+相同IV会产生相同密文**,每次加密必须使用新随机IV
- 模式:GCM(推荐,自带完整性校验;认证加密);CBC(旧方案,需要额外MAC校验完整性)
### 典型用途
- 传输/存储大量业务数据、数据库敏感字段、文件加密
- HTTPS内部传输层流量(TLS握手后,使用对称加密传输业务数据)
### 安全要点
1. 密钥必须使用密码学安全随机数生成
2. 禁止硬编码密钥在代码中
3. 优先 GCM,不要使用 ECB(ECB不安全,相同明文得到相同密文)
## 三、非对称加密(Asymmetric / 公钥密码)
一对密钥:**公钥(Public Key)、私钥(Private Key)**
- 公钥:公开分发
- 私钥:自己保管,绝不外泄
### 两条核心能力
1. **公钥加密,私钥解密**(加密,用于保密传输)
> A拿B的公钥加密消息 → 只有B的私钥能解开
2. **私钥签名,公钥验签**(数字签名,用于证明身份、防篡改)
> A用自己私钥对消息摘要签名 → 任何人可用A公钥验证:消息是A发出,未被篡改
### 常见算法
- RSA(最常用)
- ECC椭圆曲线:ECC-256,同等安全强度,密钥更短,计算更快(推荐)
> ⚠️ 非对称**速度很慢**,不适合直接加密大文件。
> 标准做法:**非对称加密AES密钥,AES加密真实数据(混合加密)**
### 典型用途
1. TLS/HTTPS证书(RSA/ECC)
2. 数字签名(API验签、软件签名)
3. 密钥交换:安全传递对称加密密钥
## 四、三者对比速查表
|类型|可逆|密钥|速度|适用场景|
|---|---|---|---|---|
|哈希Hash|❌不可逆|无密钥|极快|完整性校验、密码存储(加盐)|
|对称加密|✅可逆|单密钥,双方共用|快,适合大数据|加密文件、业务数据、TLS传输|
|非对称加密|✅可逆|公私钥成对|慢,只适合小数据|密钥交换、数字签名、身份认证|
## 五、实战组合(开发最常用)
**混合加密(HTTPS逻辑)**
1. 客户端生成随机AES对称密钥
2. 使用服务器公钥加密AES密钥(非对称,传递密钥)
3. 业务数据用AES-GCM加密(对称,加密大量数据)
4. 传输密文+加密后的AES密钥
5. 服务器用私钥解密拿到AES密钥,再解密业务数据
**密码存储**
用户密码 + 随机盐 → Bcrypt/Argon2id(带盐哈希算法,专门用于密码),存入数据库。
> 不要自己拼接盐+SHA256,优先使用专门密码哈希算法:Argon2id > bcrypt > PBKDF2
## 六、高频踩坑清单(安全代码评审重点)
1. 密码直接MD5/SHA1,无盐:高危
2. AES使用ECB模式,或者IV固定写死:高危
3. RSA直接加密大段明文:错误,RSA只能加密短数据
4. 哈希用于加密,尝试“解密哈希”:概念错误
5. 签名直接对原文签名(应先hash再签名)
6. 私钥明文硬编码、上传代码仓库:高危
## 一句话速记
哈希做摘要验完整性;对称加密用来加密大量数据;非对称负责密钥交换和数字签名;工程上一般三者组合使用。
版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载或以其他方式使用本站原创内容。