欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C#中利用MD5实现密码加密实例

程序员文章站 2022-03-14 22:49:33
...

今天我们来分享一下关于MD5 加密的一些方法,分别是16位 32位 64位 加密

    public class Program
    {
         static void Main(string[] args)
        {   
            string a = "123456";
            Console.WriteLine("32位加密1:");
            Console.WriteLine(md5.MD5Encrypt(a, 32));
            Console.WriteLine("16位加密1:");
            Console.WriteLine(md5.MD5Encrypt(a, 16));
            Console.WriteLine("====================================================");
            Console.WriteLine("32位加密2:");
            Console.WriteLine(md5.MD5Encrypt32(a));
            Console.WriteLine("==========================-===============================");
            Console.WriteLine("64位加密1:");
            Console.WriteLine(md5.MD5Encrypt64(a));
        } 
    }

上面只是调用,下面是实现的方法

    public static class md5
    {
        /// <summary>
        ///取值16位 或 32  位
        /// </summary>
        /// <param name="password">待加密的字符串</param>
        /// <param name="bit">位数,一般取值16 或 32</param>
        /// <returns>返回的加密后的字符串</returns>
        public static string MD5Encrypt(string password, int bit)
        {
            MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();
            byte[] hashedDataBytes;
            hashedDataBytes = md5Hasher.ComputeHash(Encoding.GetEncoding("gb2312").GetBytes(password));
            StringBuilder tmp = new StringBuilder();
            foreach (byte i in hashedDataBytes)
            {
                tmp.Append(i.ToString("x"));
            }
            if (bit == 16)
                return tmp.ToString().Substring(8, 16);
            else
            if (bit == 32) return tmp.ToString();//默认情况
            else return string.Empty;
        }
        /// <summary>
        /// 32位MD5加密
        /// </summary>
        /// <param name="password"></param>
        /// <returns></returns>
        public static string MD5Encrypt32(string password)
        {
            string cl = password;
            string pwd = "";
            MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
            //MD5 md5 = MD5.Create(); //实例化一个md5对像
            // 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择 
            byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(cl));
            // 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得
            for (int i = 0; i < s.Length; i++)
            {
                // 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符 
                pwd = pwd + s[i].ToString("x");
            }
            return pwd;
        }
        /// <summary>
        /// 64位 加密
        /// </summary>
        /// <param name="password"></param>
        /// <returns></returns>
        public static string MD5Encrypt64(string password)
        {
            string cl = password;
            MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); //实例化一个md5对像
            // 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择 
            byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(cl));
            return Convert.ToBase64String(s);
        }
    }

欢迎各位留言和评论,,

相关标签: C#实例 C#