从String.GetHashCode解密哈希字符串?

时间:2010-10-31 08:34:18

标签: c#

来自MSDN的示例代码 http://msdn.microsoft.com/en-us/library/system.string.gethashcode.aspx

“abc”的哈希码是:536991770

但是如何将“536991770”转换回“abc”?

4 个答案:

答案 0 :(得分:14)

无法从哈希码中获取值。请参阅hash-function定义。 哈希值不用于唯一标识原始值,对于每种类型的输入值,值唯一。

  

散列函数可以映射两个或更多个   键到相同的哈希值。在很多   应用程序,是可取的   尽量减少这种情况的发生   冲突,这意味着哈希   函数必须将键映射到散列   值尽可能均匀。

答案 1 :(得分:8)

你做不到。哈希是一种方式。

哈希的东西是你丢失了信息。与字符串的长度无关,结果始终为整数。这意味着例如获取10,000个字符的字符串的has也将产生一个整数。当然不可能从这个整数中获取原始字符串。

答案 2 :(得分:2)

无法“解密”哈希码。除了其他原因之外,因为两个不同的字符串可能很好地产生相同的哈希码。仅这一特征就无法扭转这一过程。

答案 3 :(得分:1)

你不能,
即使你将拥有一个包含世界上所有字符串的表及其哈希码,你也无法实现这一点,因为有更多的字符串然后整数(约40亿英寸)因此有几个字符串导致相同的哈希代码。