You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python Cryptography库获取文件的MD5值

如何用cryptography库正确获取并输出文件的MD5值

你的代码核心问题是:没有保存finalize()方法返回的哈希结果,反而直接打印了Hash对象实例。hashes.Hash类的finalize()方法才会输出MD5哈希的二进制结果,你需要把这个结果赋值给变量,再转换成人类可读的十六进制格式。

修改后的代码

from cryptography.hazmat.primitives import hashes

archivos = input()
with open(archivos, "rb") as f:
    bfile = f.read()
    # 初始化MD5哈希对象
    hash_obj = hashes.Hash(hashes.MD5())
    # 传入文件二进制内容更新哈希
    hash_obj.update(bfile)
    # 获取二进制哈希结果
    hash_bytes = hash_obj.finalize()
    # 转换为十六进制字符串(标准MD5格式)
    md5_result = hash_bytes.hex()
    print(md5_result)

关键说明

  1. finalize()是生成哈希值的关键方法,它返回的是二进制字节串,必须赋值给变量才能使用
  2. 调用hex()方法可以把二进制字节串转换成常见的32位十六进制MD5字符串,比如d41d8cd98f00b204e9800998ecf8427e

大文件优化方案

如果处理大文件,一次性读取整个文件会占用大量内存,建议分块读取更新哈希:

from cryptography.hazmat.primitives import hashes

archivos = input()
hash_obj = hashes.Hash(hashes.MD5())
with open(archivos, "rb") as f:
    # 每次读取4KB分块
    chunk = f.read(4096)
    while chunk:
        hash_obj.update(chunk)
        chunk = f.read(4096)
# 生成并转换哈希结果
hash_bytes = hash_obj.finalize()
md5_result = hash_bytes.hex()
print(md5_result)

内容的提问来源于stack exchange,提问作者Steven Sparkies

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 00:45:38