2011-08-22 426 views
2

是否有一种算法可以为两个数字产生相同的散列值,而不管它们的顺序如何?双向哈希算法?

例如,散列32682642应产生与散列26423268相同的结果。

这可能吗?

+2

“散列两个数字”是什么意思?散列函数通常只有一个输入,而不是两个。 –

+2

具有两个输入不会使散列函数的散列函数更少,只需要一个稳定的单个输出。 – Blindy

回答

5

当然,XOR会这样做。

3268^2642 == 2642^3268 

还有很多更(加法,乘法,基本上任何交换操作),但XOR通常用于散列反正(因为它很容易“unhash”)。

3

分别散列两个数字(使用您选择的整数到整数散列),然后添加或异或结果。

2

您可以在散列它们之前添加或异或这两个数字。

+3

但是,在散列之前添加意味着以简单的方式输入相关的输入,例如(12345,88273)和(12346,88272)。你会得到比所要求的更多的对称性,并且太多的对称性在散列中是一件坏事。 –