可以做出相反的过程吗?
string dir = textenc.Text;
uint EDI = 0x1505;
uint EDX = 0;
byte ECX = 0;
for ( int i = 0; i < dir.Length; i++ )
{
if ( dir[ i ] != '.' && dir[ i ] != '\\' )
{
EDX = EDI;
EDX = EDX << 5;
ECX = ( byte )dir[ i ];
EDX = EDX + EDI;
EDX = EDX + ECX;
EDI = EDX;
}
};
return EDI;
dir
是一个字符串,例如,当dir
为"data\font\tahoma.ttf"
时,该函数的输出为:2114405758
。
有没有办法检索只给出输出编号的原始字符串?
答案 0 :(得分:1)
没有
哈希函数忽略字符.
和\
。您可以根据需要添加这些数量,但仍会计算相同的值。
注意:正如其他人所提到的,这是一个哈希函数,它会产生无限多的冲突。
答案 1 :(得分:0)
简短的回答是否,这是不可能的。
很长的答案是,几乎不可能判断生成的散列是否对给定的输入是唯一的。
知道这一点的唯一方法是为所有可能的字符串组合生成哈希值,直到找到重复项;或者你没有重复,但在后来发生之前你将耗尽内存。还有一种情况是你不会长时间点击重复项,这也可能意味着哈希函数非常好但仍然不意味着它是可逆的。