2010-01-21 160 views
0

我試圖分析代碼來解析其中有4000個字符的最大字符串長度的字符串。編碼器使用以下公式生成密鑰哈希表密鑰生成

(fromid^(from_id<<18)^(toid<<2) 
^(toid<<16)^(repetition<<4)^(repetition<<14)^ 
(tbranch_id<<6)^(tbranch_id<<12)^ 
(fbranch_id<<8))^(fbranch_id<<10) 

我不明白這樣一個公式背後的原理嗎?

+0

原作者是否可用?你有沒有試過要求他解釋? – Juliet 2010-01-21 10:15:05

+0

@juliet不幸沒有 – 2010-01-21 10:22:07

+0

如果這是java或類似的,那麼^是排他性的,而<<是左移運算符。 (在F#中有些不同!)代碼似乎是將這些字段異或,但只有在旋轉它們之後纔會有不同的數量。我不知道你爲什麼提到字符串的長度。 散列函數採用一個潛在的大輸入(例如,長的字符串),併產生該字符串短的「指紋」。一個好的散列函數將確保很難找到兩個產生相同輸出的輸入。這可能是一個難以理解的概念。也許作者不理解呢? – John 2010-01-21 10:46:56

回答