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() + "}"); } } }