using System;
using System.Text;
using System.Security.Cryptography;
namespace Common.Security
{
/// <summary>
/// MD5 加密字符串,支持盐值加密,不可逆
/// </summary>
public class MD5Encrypt
{
public MD5Encrypt()
{
// 测试数据
Console.WriteLine(MD5Encoding("admin"));
Console.WriteLine("21232f297a57a5a743894a0e4a801fc3");
Console.WriteLine(MD5Encoding("admin", "admin"));
Console.WriteLine("ceb4f32325eda6142bd65215f4c0f371");
}
/// <summary>
/// MD5 加密字符串
/// </summary>
/// <param name="rawPass">源字符串</param>
/// <returns>加密后字符串</returns>
public static string MD5Encoding(string rawPass)
{
// 创建MD5类的默认实例:MD5CryptoServiceProvider
MD5 md5 = MD5.Create();
byte[] bs = Encoding.UTF8.GetBytes(rawPass);
byte[] hs = md5.ComputeHash(bs);
StringBuilder sb = new StringBuilder();
foreach(byte b in hs)
{
// 以十六进制格式格式化
sb.Append(b.ToString("x2"));
}
return sb.ToString();
}
/// <summary>
/// MD5盐值加密
/// </summary>
/// <param name="rawPass">源字符串</param>
/// <param name="salt">盐值</param>
/// <returns>加密后字符串</returns>
public static string MD5Encoding(string rawPass, object salt)
{
if(salt == null) return rawPass;
return MD5Encoding(rawPass + "{" + salt.ToString() + "}");
}
}
}