using System; using System.IO; using System.Security.Cryptography; using System.Text; /// /// MD5相关工具集 /// public partial class Utils { /// /// 计算内存数据MD5值 /// /// MD5值 /// 内存数据 public static string Md5(byte[] buffer) { MD5 md5 = new MD5CryptoServiceProvider(); byte[] retVal = md5.ComputeHash(buffer); StringBuilder sb = new StringBuilder(); for (int i = 0; i < retVal.Length; i++) { sb.Append(retVal[i].ToString("x2")); } return sb.ToString(); } /// /// 计算字符串的MD5值 /// /// 源串 /// 换算后的字符串 public static string Md5(string source) { MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); byte[] data = Encoding.UTF8.GetBytes(source); byte[] md5Data = md5.ComputeHash(data, 0, data.Length); md5.Clear(); string destString = ""; for (int i = 0; i < md5Data.Length; i++) { destString += Convert.ToString(md5Data[i], 16).PadLeft(2, '0'); } destString = destString.PadLeft(32, '0'); return destString; } /// /// 计算文件的MD5值 /// /// 文件的绝对路径 /// md5值 public static string Md5File(string file) { try { FileStream fs = new FileStream(file, FileMode.Open); MD5 md5 = new MD5CryptoServiceProvider(); byte[] retVal = md5.ComputeHash(fs); fs.Close(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < retVal.Length; i++) { sb.Append(retVal[i].ToString("x2")); } return sb.ToString(); } catch (Exception ex) { throw new Exception("Md5File() fail, INFO:" + ex.Message); } } }