什么是摘要算法?常见的摘要算法有哪些?
摘要算法用于将数据转换为固定长度的数据摘要,确保数据完整性和安全性。常见算法包括 MD5、SHA-1 和 SHA-2 系列。
摘要算法(也称为哈希算法或散列算法)是将任意长度的数据转换为固定长度的数据摘要(通常为 16 进制字符串)的函数,用于保证数据的完整性和防篡改。算法特点是不可逆 (数据易转摘要,但摘要难反推数据),敏感 (输入变化导致摘要剧变),固定长度输出。
- 核心特性
- 固定长度输出:无论输入数据大小,摘要的长度固定。
- 单向性:通过摘要难以逆向恢复原始数据。
- 雪崩效应:原始数据修改 1 bit,摘要结果剧烈变化。
- 抗碰撞性:算法难以找到两个不同输入产生相同摘要。
- 常见摘要算法
主流摘要算法包括:- MD5:生成 128 bit(16 字节)摘要,如 32 个 16 进制字符表示,速度快但安全性较低,常用于非敏感场景的数据校验。示例:Python 生成 MD5
import hashlib md5_obj = hashlib.md5() md5_obj.update(b'example data') print(md5_obj.hexdigest()) # 输出固定 32 字符摘要
- SHA-1:输出 160 bit(40 个 16 进制字符),比 MD5 更安全但仍有漏洞。
- SHA-2 系列:包括 SHA-256(256 bit)和 SHA-512(512 bit),安全性高但速度较慢,常用于加密和数字签名。
- MD5:生成 128 bit(16 字节)摘要,如 32 个 16 进制字符表示,速度快但安全性较低,常用于非敏感场景的数据校验。示例:Python 生成 MD5
- 应用场景
摘要算法用于:- 数据完整性验证,如文件下载校验。
- 用户密码存储摘要而非明文以增强安全性(结合盐值机制)。
- 数字签名确保消息来源真实.