Questions tagged «hash»

4
为什么最好在散列函数中使用质数作为mod?
如果我有一个从1到100的键值列表,并且想将它们组织成11个存储桶的数组,那么我会被教导如何形成mod函数 H=kmod 11H=kmod 11 H = k \bmod \ 11 现在,所有值将在9行中一个接一个地放置。例如,在第一个存储桶中将有0,11,22…0,11,22…0, 11, 22 \dots。在第二个中,将有1,12,23…1,12,23…1, 12, 23 \dots等。 假设我决定成为一个坏孩子,并使用非质数作为我的哈希函数-以12为例。使用哈希函数 H=kmod 12H=kmod 12 H = k \bmod \ 12 会导致哈希表的值在第一个存储桶中为0、12、24 0,12,24…0,12,24…0, 12, 24 \dots ,在第二个存储桶中为1、13、25 1,13,25…1,13,25…1, 13, 25 \dots等,依此类推。 本质上,它们是同一件事。我没有减少冲突,也没有通过使用质数哈希码更好地进行扩展,而且我看不出它有什么好处。

5
有防布隆过滤器吗?
一个布隆过滤器能够有效地跟踪是否处理过程中已经遇到的各种值。当有许多数据项时,布隆过滤器可以节省散列表上的大量内存。与哈希表共享的Bloom筛选器的主要功能是,如果某项不是新项,则始终显示“ not new”,但将项标记为“ not new”的可能性不为零。即使是新的。 是否有行为相反的“抗布鲁姆过滤器”? 换句话说:是否存在一个有效的数据结构,如果某项是新项,它会显示“ new”,但对于某些非新项也可能会显示“ new”? 保留所有先前看到的项(例如,在排序的链表中)可以满足第一个要求,但可能会占用大量内存。考虑到第二个要求放宽,我希望这也是不必要的。 对于那些更喜欢正式对待的人,如果Bloom过滤器认为是新的,则写,否则,写,如果确实是新的,写,而否则。b (x )= 1b(x)=1b(x) = 1Xxxb (x )= 0b(x)=0b(x) = 0n (x )= 1n(x)=1n(x) = 1Xxxn (x )= 0n(x)=0n(x) = 0 然后 ; ; ; ,对于某些。Pr [ b (x )= 0 | n (x )= 0 ] = 1Pr[b(x)=0|n(x)=0]=1Pr[b(x) = …


2
传播输入的功能
我想知道从n位数字到n位数字的函数fff是否具有以下特征: fff应该是双射的 无论fff和f−1f−1f^{-1}应该是可计算的相当快 fff应该返回与其输入没有显着相关性的数字。 原因是: 我想编写一个对数据进行操作的程序。数据的某些信息存储在二进制搜索树中,其中搜索关键字是字母的符号。随着时间的流逝,我在字母表中添加了更多符号。新符号只是获得下一个可用的免费号码。因此,树将始终对较小的键具有较小的偏差,这将导致比我认为需要的更多的重新平衡。 我的想法是与到裂伤符号数fff使得它们的整个范围内的广泛普及[0,264−1][0,264−1][0,2^{64}-1]。由于符号号仅在输入和输出期间才有关系,而符号输入只发生一次,因此应用此功能应该不会太昂贵。 我曾考虑过Xorshift随机数生成器的一次迭代,但是尽管从理论上讲应该是可行的,但我真的不知道一种撤消它的方法。 有人知道这样的功能吗? 这是一个好主意吗?

3
为什么(无冲突)哈希表查找真的是O(1)?
免责声明:我知道这里和Stackoverflow上已经存在类似的听起来的问题。但是它们都是关于碰撞的,这不是我要的。 我的问题是:为什么在碰撞较少查找O(1)摆在首位? 假设我有此哈希表: Hash Content ------------- ghdjg Data1 hgdzs Data2 eruit Data3 xcnvb Data4 mkwer Data5 rtzww Data6 现在,我正在寻找k哈希函数h(k)给出的键h(k) = mkwer。但是查找如何“知道”哈希mkwer在位置5?为什么不必在所有按键中滚动O(n)才能找到它?哈希不能是某种真正的硬件地址,因为我失去了移动数据的能力。据我所知,哈希表未按哈希排序(即使是哈希,搜索也将采用O(log n))? 知道哈希如何帮助您找到表格中的正确位置?

2
难忘的IPv6地址的哈希功能很弱
862A:7373:3386:BF1F:8D77:D3D2:220F:D7E0与IPv4的4个八位位组相比,形式的IPv6地址更难记甚至抄写。 目前已 被尝试以减轻这一点,使IPv6地址在某种程度上更令人难忘。 是否存在一个故意弱的散列函数,可以将其反转以发现短语“如果短语被弯曲以使其不值得支付,则这是相对良性且容易发现的”会散列到目标IPv6地址吗?当然,散列将有许多冲突的输入可供选择,并且可能会自动提供一个可能更令人难忘的句子,例如此示例短语。 我猜有两个部分:首先是在两个方向上都具有良好分布的弱哈希。其次是一种算法,用于从许多冲突中选择难忘的短语(简短的单词,由来自特定语言的单词组成,甚至可能遵循简化的语法)。 尽管散列函数需要很弱,但我毫不怀疑这种努力仍然很重要-但是,一旦知道了该短语,对目标地址的散列的计算就会非常快。 编辑 我发现了与之相关的想法文字学,用于记忆π的一些数字: 在涉及量子力学的大量演讲之后,我多么希望自己能喝一杯,当然是酒精!

1
攻击不满足单向属性的哈希函数
我正在为一门计算机安全课程进行修订,但我陷入了过去的问题之一。就这个: 爱丽丝()希望使用共享密钥向鲍勃()发送一条短消息,以验证该消息是否来自她。她建议发送一条包含两个部分的单个消息: 其中,是哈希函数,表示串联。AAAMMMBBBSabSabS_{ab}A→B:M,h(M∥Sab)A→B:M,h(M∥Sab) A \to B: \quad M, h(M \mathbin\parallel S_{ab})hhh∥∥\parallel 仔细说明鲍勃为检查消息是否来自爱丽丝所做的工作,以及为什么(除了属性之外)他可能会相信这一点。hhh 假设不满足单向性质,并且有可能生成原像。说明攻击者可以做什么以及如何做。hhh 如果生成原图像比较耗时,则建议一种简单的对策,以在不更改情况下改进协议。hhh 我想我知道第一个。Bob需要对接收到的消息及其共享密钥进行哈希处理,并将该哈希与从Alice接收到的哈希进行比较,如果它们匹配,则应证明Alice发送了该哈希。 我不确定后两个问题。对于第二个问题,答案是攻击者可以简单地获取给定哈希值的原始消息吗?我不知道该怎么做。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.