用python3获取文件的杂音散列

2024-06-02 06:32:37 发布

您现在位置:Python中文网/ 问答频道 /正文

python库杂音的documentation有点稀疏。在

我一直在尝试改编this的代码答案:

import hashlib
from functools import partial

def md5sum(filename):
    with open(filename, mode='rb') as f:
        d = hashlib.md5()
        for buf in iter(partial(f.read, 128), b''):
            d.update(buf)
    return d.hexdigest()

print(md5sum('utils.py'))

从我读到的答案来看,md5不能一次操作整个文件,所以它需要这个循环。但是,不确定第d.update(buf)行会发生什么。在

hashlib.md5()中的公共方法是:

^{pr2}$

鉴于mmh3

'hash',
'hash64',
'hash_bytes'

没有updatehexdigest方法。。在

有人知道如何取得类似的结果吗?在

其动机是尽可能快地测试其唯一性,结果表明杂音是一个很好的候选者。在

更新-

在@Bakuriu的评论之后,我看了一下mmh3,它似乎有更好的文档记录。在

其中的公共方法是:

import mmh3
print([x for x in dir(mmh3) if x[0]!='_'])
>>> ['hash', 'hash128', 'hash64', 'hash_bytes', 'hash_from_buffer']

…所以没有“更新”方法。我看了mmh3.hash_from_buffer的源代码,但它看起来不包含循环,而且它也不在Python中,不能真正遵循它。这是一个link to the line

所以现在只使用CRC-32,它应该和CRC-32一样好,它是well documented how to do it。如果有人发布了一个解决方案,将对其进行测试。在


Tags: 方法答案fromimportforupdatehash杂音