代码之家  ›  专栏  ›  技术社区  ›  cardamom

使用Python 3获取文件的杂音散列

  •  1
  • cardamom  · 技术社区  · 6 年前

    documentation 因为python库的杂音有点少。

    我一直在尝试改编 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() 是:

     'block_size',
     'copy',
     'digest',
     'digest_size',
     'hexdigest',
     'name',
     'update'
    

    mmh3

    'hash',
    'hash64',
    'hash_bytes'
    

    update hexdigest 方法。。

    有人知道如何达到类似的效果吗?

    here 暗示杂音是一个很好的选择。

    更新-

    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

    well documented how to do it . 如果有人发布了一个解决方案,就会进行测试。

    0 回复  |  直到 6 年前