Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何在ASP.NET MVC中生成加密哈希?_Asp.net Mvc_Encryption - Fatal编程技术网

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

Asp.net mvc 如何在ASP.NET MVC中生成加密哈希?,asp.net-mvc,encryption,Asp.net Mvc,Encryption,我正在研究创建一个自定义成员登录系统(用于学习),但我还没有找到生成加密哈希的C#命令 是否需要导入某个名称空间或类似的内容?首先,加密哈希是矛盾的。就像一块素食牛排。您可以使用加密,也可以对它们进行散列(您应该对它们进行散列),但散列不是加密 查找以Md5;)开头的类或者Sha1——这些是散列算法。它在.NET(System.Security.Cryptography命名空间)中都有。使用命名空间System.Security.Cryptography: MD5 md5 = new MD5Cr

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


是否需要导入某个名称空间或类似的内容?

首先,加密哈希是矛盾的。就像一块素食牛排。您可以使用加密,也可以对它们进行散列(您应该对它们进行散列),但散列不是加密


查找以Md5;)开头的类或者Sha1——这些是散列算法。它在.NET(System.Security.Cryptography命名空间)中都有。

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

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

return BitConverter.ToString(encodedBytes);

或者

就我而言,我使用此函数来获取gravatar图像轮廓:

你可以随心所欲地使用它

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";
    }

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

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

所以我需要将原始密码从字符串转换为Byte[]类型?@quakkels:Yes,如第2行所做,因为函数采用byteSweet数组。。。我只需要使用System.Text,这非常有效!!如果我提供原始哈希,我们能把它解码成真实的吗form@Agha不,或者你需要使用蛮力生成所有可能的散列,看看哪一个是与通常称为“单向加密”的@CharlesBurns相同的散列,但它不应该是,因为它不是加密。没有“单向纯素牛排”@DeltaTango:你是对的,从技术上讲,哈希不是加密,尽管使用了单词,因为它很难/不可能逆转。尽管如此,字典还是由用法编写的,我更倾向于压缩类比,而不是牛排类比。AES是“无损加密”,类似于PNG的图像,而SHA是“有损”的,类似于JPG,将信息压缩为是(可能)/否的答案。当然,如果JPG将照片“压缩”为单个黑白像素,则它是无用的加密也可以用于散列,在某种程度上。将数据用作其自己的密钥。这就是上面的类比真正开始破裂的地方,尽管可能不如牛排(也许是“用牛排喂植物,最后变成素食牛排”)那样。这对打字有点伤害。如果我提供原始的哈希,我们能把它解码成真实的吗form@Agha,哈希不能“解码”或“取消哈希”。哈希是单向过程。