hashlib与hmac:数据加密与哈希
在信息安全领域,哈希(Hash)算法和消息认证码(HMAC)是两项基础而至关重要的技术。它们不直接“加密”数据(严格来说哈希是单向的),而是为数据提供完整性校验、身份认证和防篡改能力。Python 标准库中的hashlib和hmac模块,为我们提供了简单而强大的工具来实现这些功能。
本文将系统性地介绍哈希算法的基本原理、hashlib模块的用法、常见哈希算法(MD5、SHA 系列)的特性与安全建议,然后深入讲解hmac模块及其在消息认证中的应用,最后通过实际案例展示如何在密码存储、文件校验、API 签名等场景中正确使用它们。全文超过 5000 字,兼具理论深度与实践指导。
一、哈希算法基础
哈希函数(Hash Function)是一种将任意长度的输入数据映射为固定长度输出(称为“哈希值”或“摘要”)的数学函数。优秀的哈希函数具有以下核心特性:
- 确定性:同一输入总是产生相同的输出。
- 单向性:从哈希值无法逆向推导出原始输入。
- 抗碰撞性:难以找到两个不同的输入产生相同的哈希值。
- 雪崩效应:输入的一点点变化都会导致输出发生巨大改变。
哈希算法广泛应用于:
- 密码存储(不存储明文,只存储哈希值)。
- 文件完整性校验(下载后比对哈希值)。
- 数字签名(结合非对称
