有谁知道如何反转此函数来生成原始输入字符串? 如标题中所示,这是一个Bob jenkins哈希函数,所有输入都是文件夹名称或带扩展名的文件名。
public static uint Hash(string str)
{
uint value = 0, temp;
var index = 0;
var quoted = false;
if (str[index] == '"')
{
quoted = true;
index++;
}
str = str.ToLower();
for (; index < str.Length; index++)
{
var v = str[index];
if (quoted && (v == '"')) break;
if (v == '\\')
v = '/';
temp = v;
temp = temp + value;
value = temp << 10;
temp += value;
value = temp >> 6;
value = value ^ temp;
}
temp = value << 3;
temp = value + temp;
var temp2 = temp >> 11;
temp = temp2 ^ temp;
temp2 = temp << 15;
value = temp2 + temp;
if (value < 2) value += 2;
return value;
}
答案 0 :(得分:2)
你做不到。该函数接受任何字符串,只返回无符号int
- 它通常不可能是可逆的。