然后我想知道,如果我在混合中添加另一个散列,例如SHA1(2^160)或CRC32(2^32),这是否会大大提高识别唯一文件的能力,即比较文件的MD5和SHA1的唯一性?该二次检查是否首选SHA1或CRC32?
如果是这样,我如何同时计算MD5和SHA1/CRC32,同时迭代一个非常大的文件的1MB块,以避免读取大文件两次?这是我为MD5准备的:
def md5(fname):
hash_md5 = hashlib.md5()
with open(fname, "rb") as f:
for chunk in iter(lambda: f.read(2 ** 20), b""):
hash_md5.update(chunk)
return hash_md5.hexdigest()
目前,在检查相同的MD5之后,我的代码将运行
作为最终检查。这显然是资源密集型的,效率不高。