首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python:如何从两个文件创建一个哈希值

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

Stack Overflow用户
提问于 2019-06-14 02:07:26
回答 1查看 45关注 0票数 1

我希望从两个文件创建一个哈希,但不确定如何做。

通过使用下面的代码,我可以一次散列一个文件。

代码语言:javascript
复制
#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)

理想情况下,我想对此进行调整,这样它将采用两个文件,并生成两个文件的一个哈希?不确定这是不是真的可能。

编辑:我已经按如下方式更新了代码。它运行了,但我只得到了以下输出,我不确定为什么。有谁有什么见解吗?

组合:位于0x000001DFFC9929B8的_hashlib.HASH对象的内置方法十六进制

代码语言:javascript
复制
#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))
EN

回答 1

Stack Overflow用户

发布于 2019-06-14 03:20:39

你可以循环遍历这些文件:

代码语言:javascript
复制
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))

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56586277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档