我一直負責在Perl中爲變長二進制字符串實現XOR哈希;長度可以從18到100多。在我對它的理解中,我用一個鍵對X的二進制字符串進行異或運算。我讀過這個在線的兩個不同的應用程序:XOR哈希如何工作+選擇密鑰
- 其中一個選項是如果我的密鑰的長度比字符串短,我把字符串分成塊的密鑰長度;然後這些都被摺疊在一起(因此得到的散列的長度將是密鑰的長度)。
- 我也讀過,你只是在字符串的每個關鍵字長度塊之間進行異或操作(因此生成的哈希值將是字符串的長度)。
其中一個比另一個更正確嗎?這是用於索引中的哈希值,所以我傾向於認爲第一個選項(可能會產生短的哈希值)會更好。
最後,有沒有一種很好的方法來生成一個足夠隨機的密鑰?根據要被散列的字符串的長度,是否有一個好的長度來選擇密鑰?
編輯:順便說一下,我很清楚這個散列工作有多糟糕。這是嚴格的比較目的。 :)
任何使用XOR的特定推理?這需要是可逆的嗎?這也許是功課嗎?只是好奇。 – 2010-03-10 01:58:24
不要忘記,在使用XOR「加密」/散列時,可以使用以下任何兩部分:密文,明文,密鑰 - 查找其餘部分。請謹慎行事;) – Cam 2010-03-10 02:02:05
也是,你爲什麼要用鑰匙?聽起來不像是給我的散列。 – Cam 2010-03-10 02:06:55