我之前一直在使用adler32
来产生文本块的32位哈希值(然后将其用作文件名,以保存处理版本的缓存)。例如:
hashed_file_name = adler32(pragraph.encode())
我想增加哈希大小,以减少碰撞的可能性(即两个不同的文本块获得相同的哈希代码,考虑到我有大约1000万个文本块,我认为在约0.2%的情况下会发生碰撞 - 即10 million / 2 ^ 32)。
我的问题是,哪种最快的哈希生成器可以产生至少64位的哈希?SHA1是否是一个有效的选择[它产生160位哈希]?即。
hashed_file_name = hashlib.sha1(pragraph.encode()).hexdigest()
虽然这对我的需求来说有些过度,但其他版本/选项在处理时间方面是否更加高效?
hash()
在 32 位 Python 上是 32 位的,看起来是这样,尽管这是一个可能会改变的实现细节。 - kindall