标准hash('hello')
函数可能会在不同的机器,不同版本的Python上生成不同的哈希值,甚至可能在同一个Python版本/机器上运行相同程序的不同哈希值。
什么是正常的纯Python (或内置)替代品,具有较低的碰撞机率?我之前使用的用例是检查数据库中字符串的唯一性(注意:它不必100%万无一失,只是极不可能与另一个字符串冲突)。
答案 0 :(得分:1)
Murmurhash对于非cyrptographic用法是一个不错的选择(与使用慢速加密哈希的hashlib
相反),原因有多种:
使用非常广泛
不仅可以在Python版本和机器上移植,而且可以跨不同语言移植
Here是它的Python绑定。 Here是关于算法本身的问题。
如果由于某些技术原因,可能需要使用纯Python自己的实现,那么有一些可行的选项:
答案 1 :(得分:1)
尝试使用python hashlib。它具有MD5,SHA1,SHA224,SHA256,SHA384和SHA512的实现,它们可以为您提供一个具有较低冲突机会的良好哈希。
示例输入:
import hashlib
hashed_string = hashlib.sha512("hello").hexdigest()
print hashed_string
输出:
9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043