我们有几个1到500个元素的集合。平均收藏规模为17。
我们希望拥有所有元素的哈希值,以确保新元素还不是集合的一部分,我们正在寻找尽可能小的哈希字符串。我们目前使用集合中每个项目的唯一元素之一sha1
,但我们希望减小它的大小。
我们可以用什么方法来缩短我们必须存储的字符串:在字符串中取X个第一个元素? X最后?
只取一小部分sha1字符串是否安全?如果是这样,说X字符和500个元素的碰撞概率是多少? (X等于3,4,5或更多?)
答案 0 :(得分:0)
看一下这篇文章http://preshing.com/20110504/hash-collision-probabilities
底部有一张桌子。选择适用的碰撞机会和相应的位深度,然后选择散列函数http://en.wikipedia.org/wiki/Cryptographic_hash_function#Cryptographic_hash_algorithms