2010-01-21 161 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

回答