添加两个哈希值会生成有效的哈希吗?

时间:2011-04-04 02:17:57

标签: hash

添加2个哈希值会产生另一个有效的哈希值吗?换句话说,这个哈希(a)+哈希(b)!=哈希(c)+哈希(d)总是如此?我认为不会,但重要吗?哈希函数的基本属性是否在保留下添加?

5 个答案:

答案 0 :(得分:3)

由于多个值可以具有相同的散列,因此可能是散列(a)=散列(b)=散列(c)=散列(d),因此散列(a)+散列(b)=散列( c)+ hash(d)。

答案 1 :(得分:1)

根据pidgeonhole定理,哈希不能是无冲突的。因此对于a,b,c和d的某些值,散列(a)+散列(b)==散列(c)+散列(d)。添加哈希函数仍然可以获得你加在一起的哈希的优良品质,但它不会使结果比两者中的更好。 (你没有增加你的哈希表空间。)

第二个想法,结果将只是你添加的更糟糕的哈希值。

答案 2 :(得分:0)

这取决于您的散列算法,通常情况并非如此。给定一个有限的哈希表,当表的末尾附近的任何两个哈希键加在一起时,显然会给你一个超出法定哈希值限制的哈希键。

答案 3 :(得分:0)

我的假设是,当你说“哈希”时,你指的是像MD5或SHA1这样的加密版,如果你正在谈论别的东西......请理我。

将哈希加在一起将是一种奇怪的过程,对它们进行异或可能会更有意义......等等。

散列(a)+散列(b)==散列(c)+散列(d)是可能的,但极不可能。通过合并两个哈希,你创造了这种可能性(尽管哈希(a)= =哈希(c)离开船只的可能性很小)。散列相同的项目显然会导致平等。

答案 4 :(得分:0)

您用英语表达的问题与您提供的表达方式不符。你想知道是否:

  hash(a) + hash(b) != hash(c)

永远是真的吗?

答案是否定的。任何值都可能是有效的哈希值。