gpt4 book ai didi

Python:如何从两个文件创建一个哈希值

转载 作者:行者123 更新时间:2023-12-01 07:43:14 24 4
gpt4 key购买 nike

我正在寻找从两个文件创建哈希,但不知道如何做。

我可以使用以下代码一次对一个文件进行哈希处理。

#functions: create sha384 hash
def create_hash(folder, filename):
BLOCKSIZE = 65536
hasher = hashlib.sha384()
with open(folder + filename, 'rb') as afile:
buf = afile.read(BLOCKSIZE)
while len(buf) > 0:
hasher.update(buf)
buf = afile.read(BLOCKSIZE)
#print(hasher.hexdigest())
return BLOCKSIZE, hasher

BLOCKSIZE, hasher = create_hash(ARCHIVE_FOLDER, ARCHIVE_FILENAME)

理想情况下,我想对此进行调整,以便它需要两个文件并生成两个文件的一个哈希值?不确定这是否真的可能。

编辑:我已更新代码如下。它运行了,但我只得到以下输出,我不知道为什么。大家有什么见解吗?

combined: built-in method hexdigest of _hashlib.HASH object at 0x000001DFFC9929B8

#functions: create sha384 hash
def create_hash2(folder, filename1, filename2):
BLOCKSIZE = 65536
hasher = hashlib.sha384()
with open(folder + filename1, 'rb') as afile, open(folder + filename2, 'rb') as bfile:
buf = afile.read(BLOCKSIZE) and bfile.read(BLOCKSIZE)
while len(buf) > 0:
hasher.update(buf)
buf = afile.read(BLOCKSIZE) and bfile.read(BLOCKSIZE)
#print(hasher.hexdigest())
return BLOCKSIZE, hasher

#test
BLOCKSIZE, hasher = create_hash2(ARCHIVE_FOLDER, '1--2019-06-13-archive.zip', '2--2019-06-13-archive.zip')
print('combined: ' + str(hasher.hexdigest))

最佳答案

您可以循环遍历文件:

def create_hash(folder, filenames):  # takes an arbitrary number of filenames
BLOCKSIZE = 65536
hasher = hashlib.sha384()
for filename in filenames:
with open(folder + filename, 'rb') as afile:
buf = afile.read(BLOCKSIZE)
while len(buf) > 0:
hasher.update(buf)
buf = afile.read(BLOCKSIZE)
return BLOCKSIZE, hasher

BLOCKSIZE, hasher = create_hash(ARCHIVE_FOLDER, (ARCHIVE_FILENAME_1, ARCHIVE_FILENAME_2))

请注意,提供文件名的顺序很重要(即,如果交换两个文件名,哈希值几乎肯定会不同)。

关于Python:如何从两个文件创建一个哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56586277/

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