尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Python3 hashlib 模块

Python3 hashlib 模块
📅 发布时间:2026/6/20 3:53:30

Python3 hashlib 模块

在 Python3 中,hashlib模块提供了一系列加密哈希算法的实现,用于计算数据的哈希值。哈希算法(又称散列算法)通过将任意长度的输入数据转换为固定长度的输出(哈希值),具有单向性(无法从哈希值反推原始数据)和唯一性(不同数据大概率产生不同哈希值)的特点,常用于数据校验、密码存储、数字签名等场景。

一、基本用法

hashlib的核心流程是:创建哈希对象 → 更新数据 → 获取哈希值。

关键说明:

  • 哈希算法处理的是字节数据(bytes),因此字符串需先通过encode()编码为 bytes(如utf-8)。
  • 可通过update()多次传入数据,最终计算的是所有数据的总哈希值(适合分块处理大数据)。
  • 哈希值可通过digest()(返回 bytes 类型)或hexdigest()(返回十六进制字符串,更易读)获取。

二、常用哈希算法及示例

hashlib支持多种主流算法,如md5、sha1、sha256、sha512等(安全性:sha512 > sha256 > sha1 > md5)。

1. MD5

import hashlib# 1. 创建MD5哈希对象
md5_hash = hashlib.md5()# 2. 更新数据(需传入bytes类型)
data = "hello world"
md5_hash.update(data.encode("utf-8"))  # 字符串编码为bytes# 3. 获取哈希值(十六进制字符串)
print(md5_hash.hexdigest())  # 输出:5eb63bbbe01eeed093cb22bb8f5acdc3
 

2. SHA-256

import hashlib# 直接传入bytes数据(b前缀表示bytes)
sha256_hash = hashlib.sha256(b"hello world")# 获取哈希值
print(sha256_hash.hexdigest())  # 输出:a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e44b0
 

3. 分块更新数据(适合大文件)

对于大文件或流式数据,可分多次调用update()累积数据,避免一次性加载到内存:
 
import hashlibdef calculate_file_hash(file_path, algorithm="sha256"):# 创建指定算法的哈希对象(通过hashlib.new()支持动态指定算法)hash_obj = hashlib.new(algorithm)# 分块读取文件并更新哈希with open(file_path, "rb") as f:while chunk := f.read(4096):  # 每次读取4096字节(可调整)hash_obj.update(chunk)return hash_obj.hexdigest()# 示例:计算某文件的SHA-256哈希
print(calculate_file_hash("large_file.zip"))  # 输出文件的哈希值
 

三、重要属性与方法

方法 / 属性说明
hashlib.new(algorithm) 创建指定算法的哈希对象(如new("sha3_256"))
update(data) 向哈希对象传入数据(data 必须为 bytes)
digest() 返回 bytes 类型的哈希值
hexdigest() 返回十六进制字符串类型的哈希值
digest_size 哈希值的字节长度(如 SHA-256 为 32 字节)
block_size 算法的块大小(用于内部计算)
algorithms_available 系统支持的所有哈希算法列表
algorithms_guaranteed 所有 Python 环境都保证支持的算法列表

四、注意事项

  1. 安全性:MD5和SHA1已被证明存在安全漏洞,不推荐用于密码存储、数字签名等安全场景,建议使用SHA-256、SHA-512或更先进的SHA3系列。
  2. 数据类型:必须传入 bytes 类型数据,字符串需先编码(如str.encode("utf-8")),否则会报错。
  3. 哈希碰撞:理论上不同数据可能产生相同哈希值(碰撞),但好的算法(如 SHA-256)碰撞概率极低,可忽略。

五、扩展:带密钥的哈希(HMAC)

hashlib常与hmac模块配合使用,实现带密钥的哈希(HMAC),用于身份验证等场景(如 API 签名):
 
import hmac
import hashlibkey = b"my_secret_key"  # 密钥(bytes类型)
data = b"hello world"   # 待加密数据# 计算HMAC-SHA256
hmac_obj = hmac.new(key, data, digestmod=hashlib.sha256)
print(hmac_obj.hexdigest())  # 输出带密钥的哈希值
 
 
通过hashlib,可以便捷地实现数据哈希计算,满足数据校验、安全存储等需求。实际使用时需根据场景选择合适的算法,并注意数据类型和安全性要求。

相关新闻

  • 2025年沈阳酒店联系电话推荐:地铁直达景点合集
  • 2025年沈阳酒店联系电话推荐:地铁旁热门住宿清单
  • Flink-SQL经过过滤-解析-去重-聚合计算写入到MySQL表

最新新闻

  • 2026芜湖漏水检测维修精选优质服务商TOP5推荐!卫生间漏水/厨房漏水/屋顶天花板漏水/阳台漏水/地下室漏水防水补漏检测维修-正规防水补漏公司优选口碑榜测评推荐 - 即刻修防水
  • Mission Planner:5个高效实用技巧让你快速掌握专业无人机飞行控制
  • 预装windows11系统的西门子IPC型号:PX-39A PRO
  • 2026年污泥处理设备靠谱厂商推荐:德州洁盛环保科技,以稳定设备助力养殖及工业污水污泥无害化处置 - 海棠依旧大
  • S12S BDM硬件握手协议:ACK脉冲原理与嵌入式调试实战
  • 前向车辆最小转弯约束下的两点间最短路径生成工具(MATLAB实现+图形可视化)

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号