1. 程式人生 > >MD5加密處理

MD5加密處理

  MD5 加密後的位數一般為兩種,16 位與 32 位。16 位實際上是從 32 位字串中,取中間的第 9 位到第 24 位的部分

 

using System;
using System.Security.Cryptography;
using System.Text;

namespace _04MD5加密
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            string tStr = MD5Encrypt("MD5加密處理");
            Console.WriteLine(tStr);
            Console.ReadKey();
        }

        /// <summary>
        /// MD5加密
        /// </summary>
        /// <param name="input">需要加密的字串</param>
        /// <returns></returns>
        public static string MD5Encrypt(string input)
        {
            return MD5Encrypt(input, new UTF8Encoding());
        }

        /// <summary>
        /// md5加密16|32位
        /// </summary>
        /// <param name="input">需要加密的字串</param>
        /// <param name="length">加密位數,可選16位與32位</param>
        /// <returns></returns>
        public static string MD5Encrypt(string input, int length)
        {
            string res = MD5Encrypt(input, new UTF8Encoding());
            if (length == 16)
            {
                res = res.Substring(8, 16);
            }
            return res;
        }

        /// <summary>
        /// MD5加密
        /// </summary>
        /// <param name="input">需要加密的字串</param>
        /// <param name="encode">字元的編碼</param>
        /// <returns></returns>
        public static string MD5Encrypt(string input, Encoding encode)
        {
            if (string.IsNullOrEmpty(input))
            {
                return null;
            }
            MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();
            byte[] data = md5Hasher.ComputeHash(encode.GetBytes(input));
            StringBuilder sBuilder = new StringBuilder();
            for (int i = 0; i < data.Length; i++)
            {
                sBuilder.Append(data[i].ToString("x2"));
            }
            return sBuilder.ToString();
        }

    }
}

 

  

上述程式碼執行後得到的結果如下: