首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通用的散列函数族是否只为了防止敌人的攻击?

通用的散列函数族是否只为了防止敌人的攻击?
EN

Stack Overflow用户
提问于 2016-02-06 05:28:41
回答 1查看 312关注 0票数 2

如果我的意图是只有一个好的哈希函数,将数据均匀地传播到所有的桶中,那么我不需要想出一个哈希函数家族,我只需要一个好的哈希函数,对吗?

拥有一个散列函数族的目的只是为了使敌人更难建立一个病理数据集,因为当我们随机选择一个散列函数时,他/她没有使用哪个哈希函数的信息。我的理解对吗?

编辑:因为有人试图关闭,因为不清楚;这个问题是知道使用一个通用的散列函数家族的真正目的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-08 02:17:32

我只需要一个好的哈希函数,对吗?

正如您在后面的问题中所指出的,一个知道您正在使用的哈希函数的“敌人”可能会准备一个病理数据集。

此外,哈希只是将数据存储到表的存储桶中的第一个阶段--如果您正在实现开放寻址/闭包散列,您还需要在碰撞后选择替代的桶来探测:线性和二次探测之类的简单方法通常提供足够的冲突避免,而且在数学上可能比重散列更简单,因此比重散列更快,但它们不保持下一个探测在负载因子下找到未使用桶的可能性。使用另一个好的哈希函数(包括来自此类函数家族的另一个哈希函数)进行重新散列,所以如果这对您来说很重要,您可能更喜欢使用一个散列函数系列。

还请注意,有时内存中的哈希表用于表示磁盘数据上的偏移量/扇区存储在哪里,因此,使用内存中已经存在的数据进行额外的重散列计算可能比等待磁盘I/O以找到另一个冲突的更高概率(使用线性/二次探测)更有吸引力。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35237721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档