什么是MurmurHash3种子参数?

Tia*_*sta 31 c++ hash

MurmurHash3_x86_32()需要种子参数.我应该使用什么价值,它有什么作用?

Dou*_*rie 29

种子参数是您随机化哈希函数的一种方法.您应该在散列函数的同一应用程序中为散列函数的所有调用提供相同的种子值.但是,每次调用应用程序(假设它正在创建新的哈希表)都可以使用不同的种子,例如随机值.

为什么提供?

一个原因是攻击者可能使用散列函数的属性来构建拒绝服务攻击.他们可以通过向哈希函数提供字符串来执行此操作,所有字符串都以相同的值哈希,从而破坏哈希表的性能.但是,如果您为程序的每次运行使用不同的种子,则攻击者必须使用的字符串集会发生变化.

请参阅:Web应用程序平台上的有效DoS

#hashDoS还有一个Twitter标签

  • 这与[universal hashing](http://en.wikipedia.org/wiki/Universal_hashing)的想法有关,但并不完全等同:你有一个完整的家庭(在这种情况下),而不是一个哈希函数,MurmurHash3就是这个家族,每个可能的种子价值都会给你一个特定的功能.)如果您发现输入数据恰好产生分布不均的哈希值(例如,由于攻击),您可以选择新的随机种子值并重新输入数据; 数据不太可能为您的新种子值产生不良分布,因此您可以击败攻击. (4认同)