2011-08-22 425 views
2

是否有一種算法可以爲兩個數字產生相同的散列值,而不管它們的順序如何?雙向哈希算法?

例如,散列32682642應產生與散列26423268相同的結果。

這可能嗎?

+2

「散列兩個數字」是什麼意思?散列函數通常只有一個輸入,而不是兩個。 –

+2

具有兩個輸入不會使散列函數的散列函數更少,只需要一個穩定的單個輸出。 – Blindy

回答

5

當然,XOR會這樣做。

3268^2642 == 2642^3268 

還有很多更(加法,乘法,基本上任何交換操作),但XOR通常用於散列反正(因爲它很容易「unhash」)。

3

分別散列兩個數字(使用您選擇的整數到整數散列),然後添加或異或結果。

2

您可以在散列它們之前添加或異或這兩個數字。

+3

但是,在散列之前添加意味着以簡單的方式輸入相關的輸入,例如(12345,88273)和(12346,88272)。你會得到比所要求的更多的對稱性,並且太多的對稱性在散列中是一件壞事。 –