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);
}
}
}