Python hashlib与hmac模块加密实战指南

Cora
Cora
发布时间:2026-10-11 | 3人浏览过
原创

本文详细解析Python中hashlib和hmac模块的使用方法。hashlib整合了MD5、SHA系列等加密算法,适用于单向数据摘要生成;hmac模块则结合密钥对内容进行加密,常用于身份验证与数据完整性校验。文章提供完整代码示例,涵盖从基础调用到参数配置的实操步骤,帮助开发者快速掌握Python加密编程。

hashlib模块:单向加密算法基础

在Python 3中,原本分散的MD5和SHA模块已被统一整合至 hashlib 中。该模块提供了多种标准的单向加密算法,包括 md5、sha1、sha224、sha256、sha384 和 sha512。这些算法常用于生成数据的数字指纹或校验码,确保数据在传输或存储过程中的完整性。

核心操作步骤

  1. 初始化算法对象:通过 hashlib.算法名() 创建对应的哈希对象。
  2. 输入数据:调用 .update() 方法传入待加密的字节流(Bytes)。注意,字符串需先通过 .encode() 转换为 UTF-8 编码的字节。
  3. 获取结果:调用 .hexdigest() 方法获取十六进制格式的加密字符串。

代码示例

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import hashlib

# 1. MD5 加密算法
a = hashlib.md5()
a.update("Hello Lanten.".encode("utf-8"))
print("md5 加密算法:", a.hexdigest())

# 2. SHA224 加密算法
b = hashlib.sha224()
b.update("Hello Lanten.".encode("utf-8"))
print("sha224 加密算法:", b.hexdigest())

# 3. SHA256 加密算法
c = hashlib.sha256()
c.update("Hello Lanten.".encode("utf-8"))
print("sha256 加密算法:", c.hexdigest())

# 4. SHA384 加密算法
d = hashlib.sha384()
d.update("Hello Lanten.".encode("utf-8"))
print("sha384 加密算法:", d.hexdigest())

# 5. SHA512 加密算法
e = hashlib.sha512()
e.update("Hello Lanten.".encode("utf-8"))
print("sha512 加密算法:", e.hexdigest())

hmac模块:带密钥的加密机制

单纯的哈希算法(如MD5)容易受到彩虹表攻击。为了解决这一问题,Python 提供了 hmac 模块。HMAC(Hash-based Message Authentication Code)通过将数据与一个共享密钥结合后再进行哈希运算,不仅保证了数据完整性,还能验证数据来源的合法性。

核心操作步骤

  1. 导入模块:使用 import hmac。
  2. 创建HMAC对象:调用 hmac.new(key, message, digestmod)。其中 key 和 message 必须是字节类型(Bytes)。
  3. 获取摘要:直接调用 .hexdigest() 获取结果。

代码示例

# hmac 加密算法模块
import hmac

message = b"Hello Lanten."
key = b"secret"

# 指定使用 MD5 算法进行 HMAC 计算
h = hmac.new(key, message, digestmod = "MD5")
# 或者分步操作:
# h = hmac.new(key)
# h.update(message)

print("hmac 加密算法:", h.hexdigest())

注意:在 hmac.new() 中,digestmod 参数用于指定底层使用的哈希算法(如 "MD5"、"SHA256" 等)。若省略该参数,默认使用 SHA1。此外,密钥(key)和数据(message)必须严格为字节类型,否则在 Python 3 中会抛出类型错误。

总结

掌握 hashlib 和 hmac 模块是Python安全编程的基础。对于无需密钥校验的场景(如文件完整性校验),使用 hashlib 即可;而对于需要验证数据来源或防止篡改的场景(如API签名、用户密码存储),则必须使用 hmac 模块并妥善保管密钥。以上就是Python hashlib和hmac模块使用方法解析的详细内容,更多关于Python加密技术的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表