3

我已经生成了一个哈希码

string textBoxVal="Naresh";
int code =textBoxVal.GetHashCode();
textBox2.Text=code.ToString();

它生成了一个整数值 -1078339947;

现在我想用这个(-1078339947)哈希码获得原始名称 Naresh。我怎样才能做到这一点。

4

2 回答 2

5

出于所有实际目的,您不能:哈希码比字符串少得多,因此有多个原始值可以提供相同的哈希码。

实际上,散列是一种单向操作。如果有人提到可逆散列,这不是真正的散列(因为根据定义,散列将输入集减少为较少数量的输出值之一)。与您描述的最接近的操作可能是加密函数 - 这将允许您反转操作 - 但这不太可能生成与您问题中的 10 位输出一样小的数字。

于 2013-04-18T07:26:19.290 回答
3

你就是不能那样做!哈希码不包含将其转换回字符串的所有必要信息。

甚至不能保证GetHashCode()在不同的环境中会返回相同的东西。

查看Eric Lippert的博客文章Guidelines and rules for GetHashCode

于 2013-04-18T07:27:58.653 回答