我想更改asp.net .core中的密码加密方法,我想使用md5加密密码,而又不会失去框架提供的所有优势。
我已经创建了加密和密码验证的方法,但是,在应用程序中,我失去了控制器中所有授权控制和用户身份验证的所有控制权,有人可以帮助我吗?
答案 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();