9

我有从字符串生成 SHA512 的代码。

 public static string GetCrypt(string text)
        {
            string hash = "";
            SHA512 alg = SHA512.Create();
            byte[] result = alg.ComputeHash(Encoding.UTF8.GetBytes(text));
            hash = Encoding.UTF8.GetString(result);
            return hash;
        }
    
现在我必须将哈希转换回字符串。有什么想法怎么做?谢谢你。

4

3 回答 3

32

哈希是单向的。您无法(轻松)将其取回。您可能需要实际加密。

于 2012-08-27T14:28:40.087 回答
1

是的。哈希是单向的。请使用 RijndaelManaged 等对称加密类。

这是我正在使用的 RijndaelSimple 类: http ://www.obviex.com/samples/encryption.asp

相同链接的缓存版本在这里: http ://webcache.googleusercontent.com/search?q=cache:WyVau-XgIzkJ:www.obviex.com/samples/encryption.asp&hl=en&prmd=imvns&strip=1

于 2012-08-27T14:36:13.150 回答
0

您无法将hash返回的字符串转换为计算散列的字符串。

如果需要,则必须将散列与每个目标字符串散列进行比较。

如果其中一个与哈希匹配,则该哈希来自目标字符串。

它的用途:如果你想存储passwordsdatabase你可以存储它的哈希值而不是密码。所以即使黑客访问了你的数据库,他也不能得到密码,因为它是哈希的。知道我们通过它的字符串的唯一方法创建哈希是为了它与所需的字符串匹配!

于 2012-08-27T14:34:43.987 回答