https://www.cnblogs.com/healer007/p/5062189.html
public class MD5Util
{
/// <summary>
/// 获取文件的md5值
/// </summary>
/// <param name="file"></param>
/// <returns></returns>
public static string GetFileMD5(string file)
{
var md5 = MD5.Create();
StringBuilder stringBuilder= new StringBuilder();
// 打开的文件也可读取
FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read,FileShare.ReadWrite);
byte[] s = md5.ComputeHash(fs);
fs.Close();
// 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得
for (int i = 0; i < s.Length; i++)
{
// 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符
stringBuilder.Append( s[i].ToString("X") );
}
return stringBuilder.ToString();
}
public static string GetTextMD5(string text)
{
StringBuilder stringBuilder = new StringBuilder();
MD5 md5 = MD5.Create(); //实例化一个md5对像
// 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择
byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(text));
// 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得
for (int i = 0; i < s.Length; i++)
{
// 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符
stringBuilder.Append ( s[i].ToString("X") );
}
return stringBuilder.ToString();
}
}