Hash 反向bob-jenkins散列函数
有人知道如何反转此函数以生成原始输入字符串吗? 正如标题中所示,这是一个Bob jenkins哈希函数,所有输入要么是文件夹名,要么是扩展名为的文件名Hash 反向bob-jenkins散列函数,hash,reverse,Hash,Reverse,有人知道如何反转此函数以生成原始输入字符串吗? 正如标题中所示,这是一个Bob jenkins哈希函数,所有输入要么是文件夹名,要么是扩展名为的文件名 public static uint Hash(string str) { uint value = 0, temp; var index = 0; var quoted = false; if (str[index] == '"') {
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;
}
publicstaticuint散列(stringstr)
{
uint值=0,温度;
var指数=0;
引用的var=假;
如果(str[index]=='''''')
{
引用=正确;
索引++;
}
str=str.ToLower();
对于(;索引6;
值=值^temp;
}
温度=值>11;
温度=温度2^温度;
temp2=temp您不能。该函数接受任何字符串,并且只返回一个无符号的int
-它通常不可能是可逆的。您不能。该函数接受任何字符串,并且只返回一个无符号的int
-它通常不可能是可逆的。好的,谢谢您的回答,有没有办法使用蛮力而不是从返回的int中计算出原始字符串?不。哈希是单向函数。如果您只有一个哈希,那么使用蛮力所能做的最好的事情就是找到所有可能映射到该哈希的字符串,并且该集合可以是无限的。好的,感谢您的回答,有没有可能使用蛮力inst的方法ead从返回的int中计算出原始字符串?否。散列是单向函数。如果您只有一个散列,那么使用蛮力最好能找到映射到该散列的所有可能字符串,并且该集合可以是无限的。