Python如何使用hashlib模块实现SHA256和MD5加密

来源:站长查询作者:小黄人头衔:程序员
导读:本期聚焦于小伙伴创作的《Python如何使用hashlib模块实现SHA256和MD5加密》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Python如何使用hashlib模块实现SHA256和MD5加密》有用,将其分享出去将是对创作者最好的鼓励。

在Python开发中,数据加密是常见需求,SHA256和MD5作为常用的哈希算法,常被用于数据校验、密码存储等场景。Python内置的hashlib模块提供了多种哈希算法的实现,不需要额外安装第三方库就可以完成SHA256和MD5加密操作。

Python如何使用hashlib模块实现SHA256和MD5加密

hashlib模块简介

hashlib是Python的标准库模块,封装了常见的哈希算法,包括MD5、SHA1、SHA256、SHA512等。哈希算法的作用是将任意长度的数据转换为固定长度的哈希值,且原始数据发生微小变化,哈希值也会发生巨大变化,因此常用于数据完整性校验、密码存储等场景。

MD5加密实现

MD5算法生成的哈希值长度为128位,通常表示为32位十六进制字符串。使用hashlib实现MD5加密的步骤如下:

  • 导入hashlib模块
  • 创建MD5哈希对象
  • 传入需要加密的数据,注意数据需要是字节类型
  • 获取哈希值结果

下面是具体的代码示例:

import hashlib

# 待加密的原始数据
data = "hello world"
# 创建MD5哈希对象,传入字节类型数据,需要先编码
md5_obj = hashlib.md5(data.encode("utf-8"))
# 获取十六进制格式的哈希值
md5_result = md5_obj.hexdigest()
print(f"MD5加密结果:{md5_result}")

运行上述代码,输出的MD5加密结果为5eb63bbbe01eeed093cb22bb8f5acdc3

SHA256加密实现

SHA256属于SHA-2系列算法,生成的哈希值长度为256位,通常表示为64位十六进制字符串,安全性比MD5更高。使用hashlib实现SHA256加密的步骤和MD5类似,只是创建哈希对象时选择对应的算法即可。

具体代码示例如下:

import hashlib

# 待加密的原始数据
data = "hello world"
# 创建SHA256哈希对象
sha256_obj = hashlib.sha256(data.encode("utf-8"))
# 获取十六进制格式的哈希值
sha256_result = sha256_obj.hexdigest()
print(f"SHA256加密结果:{sha256_result}")

运行上述代码,输出的SHA256加密结果为b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

两种加密方式的对比

MD5和SHA256的特点对比如下:

对比项MD5SHA256
哈希值长度128位(32位十六进制)256位(64位十六进制)
安全性较低,已被证明存在碰撞漏洞较高,目前暂无有效的碰撞攻击方法
运算速度更快相对较慢
适用场景非安全场景的数据校验,如文件完整性校验安全场景的密码存储、数据签名等

使用注意事项

  • hashlib的所有哈希算法都只接受字节类型的数据,传入字符串时需要先调用encode方法转换为字节,常用的编码格式为utf-8。
  • 如果需要加密的数据量较大,可以分多次调用update方法传入数据,最终调用hexdigest获取结果,效果和一次性传入全部数据一致。
  • 哈希算法是单向的,无法通过哈希值反推原始数据,因此适合存储密码的哈希值而非明文,但MD5不建议用于密码存储,优先选择SHA256或更安全的算法。
  • 如果需要加盐处理提升密码存储的安全性,可以在原始数据前或后拼接盐值再传入哈希算法,例如hashlib.sha256((data + salt).encode("utf-8")).hexdigest()

分块数据加密示例

当处理大文件时,一次性读取全部内容到内存可能会造成内存占用过高,此时可以分块读取文件内容并更新哈希对象,示例如下:

import hashlib

def get_file_sha256(file_path):
    # 创建SHA256哈希对象
    sha256_obj = hashlib.sha256()
    # 分块读取文件,每块大小为8192字节
    with open(file_path, "rb") as f:
        while chunk := f.read(8192):
            sha256_obj.update(chunk)
    # 返回哈希值
    return sha256_obj.hexdigest()

# 调用函数获取文件的SHA256值
file_hash = get_file_sha256("test.txt")
print(f"文件SHA256值:{file_hash}")

PythonhashlibSHA256MD5加密修改时间:2026-07-07 06:09:28

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。