2011-07-07 82 views
1

我真的不明白为什么布隆过滤器需要多个散列函数(例如SHA和MD5)为什么布隆过滤器需要多个哈希函数?

为什么不只是制作一个大一点例如,SHA散列,然后将其分解为多个部分并将它们视为单独的散列?在速度方面效率不高吗?

+2

根据[wikipedia](http://en.wikipedia.org/wiki/Bloom_filter),有时会这样做:*对于一个好的散列函数...这种类型的散列可以用来生成多个“不同的“哈希函数通过将其输出切分为多个位字段* –

+0

@Damien:我从来没有见过,非常感谢。如果您将其作为答案发布,我会为其+1。 :) – Mehrdad

回答

3

这个想法是使用几个不同但简单的哈希函数。如果你打算使用SHA或MD5等密码散列函数,那么你可以改变它的输入。它是否更高效取决于你的散列函数的复杂程度。

1

它被称为三重/双重哈希,它最大限度地减少了碰撞的机会,与5个哈希函数发生碰撞的概率比使用一个哈希函数小5倍。