现在的位置: 首页 > 综合 > 正文

C# .NET 实现 MD5 加密字符串(支持盐值)

2012年02月05日 ⁄ 综合 ⁄ 共 1364字 ⁄ 字号 评论关闭

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

       }

    }

} 

抱歉!评论已关闭.