gpt4 book ai didi

Python 哈希模块,提供一种获取二进制摘要 key 的方法

转载 作者:行者123 更新时间:2023-11-30 23:05:52 24 4
gpt4 key购买 nike

我不想重新发明一个可能已经存在的模块。但是 programiz 上有一个很好的例子解释如何获取 SHA-1 消息摘要

# Python rogram to find the SHA-1 message digest of a file

# import hashlib module
import hashlib

def hash_file(filename):
""""This function returns the SHA-1 hash
of the file passed into it"""

# make a hash object
h = hashlib.sha1()

# open file for reading in binary mode
with open(filename,'rb') as file:

# loop till the end of the file
chunk = 0
while chunk != b'':
# read only 1024 bytes at a time
chunk = file.read(1024)
h.update(chunk)

# return the hex representation of digest
return h.hexdigest()

message = hash_file("track1.mp3")
print(message)

现在我刚刚创建了一个导入的 .py,但想知道这种方法是否已存在于 hashlib 模块或另一个维护良好的模块中?

所以我可以走了

import some_hashlib_module
print some_hashlib_module.get_binary_SH1_digest("File of interest")

最佳答案

不,标准库中没有现成的函数来计算文件对象的摘要。您所展示的代码是使用 Python 执行此操作的最佳方法。

计算文件哈希值并不是一项经常出现的任务,不足以专门使用一个函数来完成。另外,还有许多不同类型的流,您希望以稍微不同的方式处理数据;例如,当从 URL 下载数据时,您可能希望将计算哈希值与同时将数据写入文件结合起来。因此,当前处理哈希的 API 非常通用;设置哈希对象,反复向其提供数据,提取哈希值。

您使用的函数可以写得更紧凑一点,并且支持多种哈希算法:

import hashlib

def file_hash_hexhdigest(fname, hash='sha1', buffer=4096):
hash = hashlib.new(hash)
with open(fname, "rb") as f:
for chunk in iter(lambda: f.read(buffer), b""):
hash.update(chunk)
return hash.hexdigest()

以上内容与 Python 2 和 Python 3 兼容。

关于Python 哈希模块,提供一种获取二进制摘要 key 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32985546/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com