如何在ASP.NET MVC中生成加密哈希?

时间:2010-05-10 17:42:49

标签: asp.net-mvc encryption

我正在研究创建一个自定义成员登录系统(用于学习),我无法找出生成加密哈希的C#命令。

我需要导入某个命名空间或类似的东西吗?

4 个答案:

答案 0 :(得分:18)

使用命名空间System.Security.Cryptography:

MD5 md5 = new MD5CryptoServiceProvider();
Byte[] originalBytes = ASCIIEncoding.Default.GetBytes(originalPassword);
Byte[]  encodedBytes = md5.ComputeHash(originalBytes);

return BitConverter.ToString(encodedBytes);

FormsAuthentication.HashPasswordForStoringInConfigFile method

答案 1 :(得分:4)

就我而言,我的目的是使用这个函数来获取gravatar图片profil:

你可以像你想要的那样使用它

public string getGravatarPicture()
    {
        MD5 md5 = new MD5CryptoServiceProvider();
        Byte[] originalBytes = ASCIIEncoding.Default.GetBytes(email.ToLower());
        Byte[] encodedBytes = md5.ComputeHash(originalBytes);

        string hash = BitConverter.ToString(encodedBytes).Replace("-", "").ToLower();
        return "http://www.gravatar.com/avatar/"+hash+"?d=mm";
    }

答案 2 :(得分:3)

首先,加密哈希是一个矛盾。像素食牛排。您可以使用加密,也可以对它们进行哈希处理(并且应该对它们进行哈希),但哈希不是加密。

查找以Md5开头的类;)或Sha1 - 这些是哈希算法。它就在.NET(System.Security.Cryptography命名空间)中。

答案 3 :(得分:2)

我更喜欢将哈希全部放在一个连接的字符串中。我借用this来构建我的哈希:

public static string MD5Hash(string itemToHash)
{
    return string.Join("", MD5.Create().ComputeHash(Encoding.ASCII.GetBytes(itemToHash)).Select(s => s.ToString("x2")));
}