一个非常简单的问题:
我做的很简单。我很少string
喜欢:
string A = "usd";
我想在C#中获取哈希码:
int audusdReqId = Convert.ToInt32("usd".GetHashCode());
现在我怎样才能将32位整数audusdReqId
转换回string
“usd”?
答案 0 :(得分:16)
你做不到。哈希码不包含将其转换回字符串的所有必要信息。更重要的是,您应该小心使用GetHashCode
。 This 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的目的是它必须是单向的,并且不能转换回原始值。
为什么会这样,有很好的理由。例如,常见的用法是数据库中的密码存储。您不应该知道原始值(纯文本密码),这就是您通常使用哈希码对其进行编码的原因。
还有其他用法可以将值存储到哈希集等。