假設我有任何「長」散列,如16字節的MD5或20字節的SHA1。 我想減少這個散列以適合4個字節,用於GetHashCode()
目的。如何「減少」散列?
首先,我完全知道我會碰到更多的碰撞。對我來說這完全沒問題,但我仍然希望儘可能減少碰撞。
有幾種解決方案,以我的問題:
- 我可以把哈希的4個字節首。
- 我可以拿走散列的最後4個字節。
- 我可以取4個隨機字節的散列。
- 我可以生成哈希散列,涉及經典素數乘法。
有沒有其他解決方案我沒有考慮?更重要的是,什麼方法會給我最獨特的哈希碼?我目前假設他們幾乎相同。
Microsoft選擇程序集的公鑰標記是其公鑰的SHA1哈希的最後8個字節,所以我可能會選擇此解決方案,但我想知道原因。
你的意思是,「沒有字節應該比任何其他集合更重要? – 2010-06-13 16:07:19