三类加密算法
对比哈希算法、对称加密与非对称加密的核心特性,梳理加盐、数字签名,以及密码存储、敏感数据存储和网络传输中的应用场景。
· 3 min read · —
一、总览
| 类型 | 密钥特点 | 是否可逆 | 典型算法 |
|---|---|---|---|
| 哈希算法 | 无密钥(可加盐) | 不可逆 | SHA-256 |
| 对称加密 | 加密解密同一密钥 | 可逆 | AES |
| 非对称加密 | 公钥/私钥成对 | 可逆 | RSA |
二、哈希算法
核心特性:不可逆——无法通过哈希后的值反推原值。
典型场景:
- 密码存储:数据库保存密码的哈希值,登录时比较用户输入密码的哈希值与数据库中的哈希值是否一致,判断密码是否正确。
- 文件完整性校验:下载文件后比较其哈希值与官方提供的哈希值,判断文件是否被篡改或损坏。
加盐(Salt):在密码任意固定位置插入特定字符串,使哈希结果与原始密码的哈希结果不相符,此过程称为”加盐”。目的是防止彩虹表攻击,即使两个用户密码相同,加盐后哈希值也不同。
三、对称加密
核心特性:加密和解密使用同一个密钥,也称共享密钥加密算法。
- 优点:速度快,适合大量数据加密。
- 缺点:密钥分发和管理是难点(双方需安全地共享同一密钥)。
四、非对称加密
核心特性:加密和解密使用不同的密钥,也称公开密钥加密算法。两个密钥互不相同:
- 公钥:可以公开给任何人使用。
- 私钥:必须保密。
两种操作要区分清楚:
| 操作 | 使用密钥 | 说明 |
|---|---|---|
| 加密 | 公钥加密 → 私钥解密 | 用于保证数据机密性 |
| 数字签名 | 私钥签名 → 公钥验签 | 用于保证身份认证和完整性 |
五、日常开发常见场景
- 密码存储:数据库中保存的密码需加盐后使用哈希算法(Bcrypt)加密。
- 敏感数据存储:数据库中的银行卡号、身份证号等敏感数据,使用对称加密算法保存。
- 网络传输安全:传输银行卡号、身份证号等敏感数据时,用非对称加密算法保证传输安全性。