将int从c#gethashcode()转换回字符串?

时间:2012-01-10 15:53:40

标签: c# hashcode

一个非常简单的问题:

我做的很简单。我很少string喜欢:

 string A = "usd";

我想在C#中获取哈希码:

 int audusdReqId = Convert.ToInt32("usd".GetHashCode());

现在我怎样才能将32位整数audusdReqId转换回string“usd”?

2 个答案:

答案 0 :(得分:16)

你做不到。哈希码不包含将其转换回字符串的所有必要信息。更重要的是,您应该小心使用GetHashCodeThis article解释了您应该使用它的内容。您甚至无法保证GetHashCode将在不同环境中返回相同的内容。因此,您正在使用GetHashCode进行加密。

如果您尝试创建字符串的二进制表示,则可以使用

var bytes = System.Text.Encoding.UTF8.GetBytes(someString);

这将为您提供该特定字符串的byte[]。您可以在编码上使用GetString将其转换回字符串:

var originalString = System.Text.Encoding.UTF8.GetString(bytes);

如果您尝试以加密方式保护字符串,则可以使用AES中的对称加密算法,如评论中指出的Robert Harvey

答案 1 :(得分:4)

hashcode/hash function的目的是它必须是单向的,并且不能转换回原始值。

为什么会这样,有很好的理由。例如,常见的用法是数据库中的密码存储。您不应该知道原始值(纯文本密码),这就是您通常使用哈希码对其进行编码的原因。

还有其他用法可以将值存储到哈希集等。