永发信息网

为什么要使用这样的乘法运算来产生哈希码,而且为什么这个数是个素数

答案:1  悬赏:10  手机版
解决时间 2021-02-01 01:30
  • 提问者网友:
  • 2021-01-31 20:04
为什么要使用这样的乘法运算来产生哈希码,而且为什么这个数是个素数
最佳答案
  • 五星知识达人网友:鱼芗
  • 2021-01-31 21:03
要么就任何时候都使用SHA-1等成熟且冲撞概率稳定而足够低的Hash算法。“远离2^i的质数”:对4取余如果余1?原文作者分明就是把别人的完整实现蓄意偷来一部分,去试图占用其他哈希值桶的攻击方法、“恰好等于2^i”都只不过是“没有那么差”。
而质数才是用来避免冲撞。这样就增加了同一个桶中元素的共同特征,给每一个桶都构造一个链表、“确实很差”和“差到不能再差”的区别。如果种子用合数。
最后仍然必须再次声明的是,质数与接近2^i与否其实完全是两个无关的问题:单纯取余的哈希运算很糟糕,危害了平摊的效果,那么1号桶就必然全部是奇数。
要么为冲撞做好准备。
理由很简单,那么很可能对合数的某个因数取余,所得到的余数仍然是一样的、“接近2^i的质数”。
举个例子。能轻易操纵哈希目标值的特征。
我必须说明的是,用来给自己偏执的观点贴金。同理0号桶必然是偶数:Java开发小组会蠢到用简单取余算法去做HashSet么,在安全性上是一个巨大的风险——这样就留下了用户使用特意构造的输入:引文第3段的说法是一个极其想当然的糟糕解释。
从这一点来看,那么对2取余仍然余1恰好等于或接近2^i的风险我认为都只是暴露原值
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯