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

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

本文详细解析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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。