可以zlib.crc32或zlib.adler32被安全地用于掩主键在网址?
-
25-09-2019 - |
解决方案
问题不是散列值。问题是映射的散列回的关键。即使有的碰撞你总是可以增加,直到你打一个未使用的散列。
本哈希原因是用于例如认证是因为已经有了一个关键(e。克的用户名),可用于寻找适当的记录。在这一点就变成只是一个问题比较给予的散列对所储存的散列。如果你使用的散列掩盖的关键,而不是那么这将是棘手的不仅仅是比较。转向散列入关键将解决这个虽然。
其他提示
你可以解释的32位CRC值为无符号的整数。
经进一步调查,这似乎是一个很坏的想法:
In [11]: s = set([zlib.crc32(str(x)) for x in xrange(20000000)])
In [12]: len(s)
Out[12]: 19989760
In [13]: 20000000 - len(s)
Out[13]: 10240
这是10,240个冲突中的20,000,000个主键。
不隶属于 StackOverflow