当前位置: 代码网 > it编程>前端脚本>Python > Python3 hashlib 模块基本用法详解

Python3 hashlib 模块基本用法详解

2025年10月23日 Python 我要评论
在 python3 中,hashlib模块提供了一系列加密哈希算法的实现,用于计算数据的哈希值。哈希算法(又称散列算法)通过将任意长度的输入数据转换为固定长度的输出(哈希值),具有单向性(无法从哈希值

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

一、基本用法

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

关键说明:

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

二、常用哈希算法及示例

hashlib支持多种主流算法,如md5sha1sha256sha512等(安全性: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 hashlib
def 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. 安全性md5sha1已被证明存在安全漏洞,不推荐用于密码存储、数字签名等安全场景,建议使用sha-256sha-512或更先进的sha3系列。
  2. 数据类型:必须传入 bytes 类型数据,字符串需先编码(如str.encode("utf-8")),否则会报错。
  3. 哈希碰撞:理论上不同数据可能产生相同哈希值(碰撞),但好的算法(如 sha-256)碰撞概率极低,可忽略。

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

hashlib常与hmac模块配合使用,实现带密钥的哈希(hmac),用于身份验证等场景(如 api 签名):

import hmac
import hashlib
key = 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,可以便捷地实现数据哈希计算,满足数据校验、安全存储等需求。实际使用时需根据场景选择合适的算法,并注意数据类型和安全性要求。

到此这篇关于python3 hashlib 模块的文章就介绍到这了,更多相关python hashlib 模块内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com