加密类型概述
加密是一种保护数据安全的重要技术,广泛应用于用户登录、数据传输和信息通信等场景。根据加密方式和用途,加密算法主要分为以下几种类型:
哈希(Hash)、散列、摘要算法
MAC
HMAC
关键区别:
- MD5、SHA1:不需要密钥。任何人都能计算。主要用于完整性校验(文件没被意外改坏)或快速查找(如哈希表)。
- HMAC-MD5、HMAC-SHA1:需要密钥。只有知道密钥的人才能计算和验证。主要用于消息认证(验证消息确实是发送方发出的、且未被篡改)。
| 算法/术语 | 是否是一类? | 需要密钥吗? | 主要用途 | 安全性状态 |
|---|---|---|---|---|
| 哈希/散列/摘要算法 | 是,同义词 | 否 | 完整性校验、快速查找、数字签名基础 | 视具体算法而定 |
| MD5 | 具体算法 | 否 | 曾用于文件校验、密码存储 | 不安全,已攻破 |
| SHA1 | 具体算法 | 否 | 曾用于Git、SSL证书、版本控制 | 不安全,已攻破 |
| MAC | 一类算法总称 | 是 | 消息认证、数据源认证 | 视具体实现而定 |
| HMAC | 具体构造方法 | 是 | 消息认证(常见于API签名、JWT等) | 仍然安全(即使底层用MD5/SHA1) |
MD5、SHA1 —— 是具体的哈希算法
- 它们是这类算法的具体实现,就像“汽车”这个类别下的“奔驰”和“宝马”。
- MD5:输出128位哈希值。已被证明不安全(容易人为制造碰撞),不应再用于安全相关场景。
- SHA1:输出160位哈希值。也已被证明不安全,主流浏览器和软件已逐步淘汰它。
- 替代品:现在推荐使用 SHA-2 家族(如 SHA-256、SHA-512)或 SHA-3。
MAC 和 HMAC —— 是带密钥的哈希
这里需要区分一下:
- MAC(消息认证码):不是一个具体的算法,而是一类算法的总称。它需要一个密钥参与计算,输出结果叫 MAC 值。没有密钥,无法验证。MAC 可以基于哈希算法实现,也可以基于分组密码等其他方式实现。
- HMAC(哈希消息认证码):是 MAC 的一种具体实现方式,它专门利用现有的哈希算法(如 MD5、SHA1、SHA256)来构造 MAC。
对称加密和非对称加密的区别
Base64编码
Base64是一种编码方式,不属于加密算法,但常用于数据传输。它将二进制数据转换为可打印字符,便于在HTTP等环境中传递。
各类算法比较
摘要算法不可逆,适合验证数据完整性。对称加密速度快但密钥管理复杂,适合大数据加密。非对称加密安全性高但速度较慢,适合小数据加密和密钥交换。选择加密算法时需根据具体场景权衡性能与安全性。