使用md5加密asp.net .core中的密码

时间:2019-08-01 13:36:21

标签: c# .net asp.net-mvc

我想更改asp.net .core中的密码加密方法,我想使用md5加密密码,而又不会失去框架提供的所有优势。

我已经创建了加密和密码验证的方法,但是,在应用程序中,我失去了控制器中所有授权控制和用户身份验证的所有控制权,有人可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

MD5是哈希算法!

哈希算法(如SHA256,SHA512,MD5)将任意长度的二进制字符串映射到固定长度的小型二进制字符串。

加密是一种方法,通过该方法,纯文本或任何其他类型的数据从可读形式转换为只能由另一个实体(如果他们有权访问解密密钥)解码的编码版本。

仅将MD5用于与旧版应用程序和数据兼容, 但是,如果您想使用md5散列纯文本,则可以使用以下示例代码:

using System;
using System.Text;
using System.Security.Cryptography;

public class Program
{
    public static void Main()
    {
         string source = "Hello World!";
            using (MD5 md5Hash = MD5.Create())
            {
                string hash = GetMd5Hash(md5Hash, source);
                Console.WriteLine("The MD5 hash of " + source + " is: " + hash + ".");
            }
    }
      static string GetMd5Hash(MD5 md5Hash, string input)
        {
            // Convert the input string to a byte array and compute the hash.
            byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));
            StringBuilder sBuilder = new StringBuilder();
            for (int i = 0; i < data.Length; i++)
            {
                sBuilder.Append(data[i].ToString("x2"));
            }
            return sBuilder.ToString();
        }
}

对于此主题的完整理解,您可以点击以下链接,该链接是我从Microsoft文档中复制的: https://docs.microsoft.com/en-us/dotnet/api/system.security.cryptography.md5?view=netframework-4.8

答案 1 :(得分:0)

与@Hamid相同,但具有扩展名

public static class StringExtension
{
    public static string GetMd5Hash(this string input)
    {
        using MD5 md5Hash = MD5.Create();
        byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));
        StringBuilder sBuilder = new StringBuilder();

        for (int i = 0; i < data.Length; i++)
        {
            sBuilder.Append(data[i].ToString("x2"));
        }
        return sBuilder.ToString();
    }
}

因此,您可以像var encodedPassword = password.GetMd5Hash();

一样使用它
  • 从c#7.3版以上可以使用这种用法