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();}}
}
上述代码执行后得到的结果如下: