//计算字符串的md5值
public string GetMd5String(string msg)
{
StringBuilder sb = new StringBuilder();
//1.创建md5对象
using (MD5 md5 = MD5.Create())
{
//1.1把字符串转换为byte[]
//对象字符串中包含中文,如果在进行md5计算时,使用不同的编码返回字节数组,那么可能 计算出的md5值会不相同,所以要使用相同的md5编码
byte[] buffers = Encoding.UTF8.GetBytes(msg);
//1.2进行md5计算,md5计算完毕后,返回的也是一个byte[]。
byte[] bytes = md5.ComputeHash(buffers);
md5.Clear();//释放资源,清除内存
//1.3把bytes数组的每个字节转为一个16进制的字符串
for (int i = 0; i < bytes.Length; i++)
{
sb.Append(bytes[i].ToString("x2"));
}
}
return sb.ToString();
}
//计算文件的md5值
public string GetFileMd5String(string path)
{
StringBuilder sb = new StringBuilder();
//创建md5对象
using (MD5 md5 = MD5.Create())
{
using (FileStream fs = File.OpenRead(path))
{
byte[] bytes = md5.ComputeHash(fs);
md5.Clear();
for (int i = 0; i < bytes.Length; i++)
{
sb.Append(bytes[i].ToString("x2"));
}
return sb.ToString();
}
}
}