01md5码

知识点一MD5码是什么

MD5 (Message-Digest Algorithm)是MD5信息摘要算法的简称,
它是一种广泛使用的密码散列函数,
可以生成出一个128位(16个字节)的散列值,
用于确保信息的完整—致性。
当我们将数据经过MD5算法计算过后,
不管我们传入的数据有多大
都会生成一个固定长度(128位共16个字节)的信息摘要值,
相同的数据,每次经过MD5算法计算后的结果都会是—样的。
如果数据变化,MD5码将会发生变化。
因此,我们可以利用MD5码作为文件的唯一标识
通过它来判断文件内容是否变化

知识点三C#中获取文件的MD5码

关键类:

  • MD5 ——MD5类

  • MD5CryptoServiceProvider — MD5加密服务提供商类

老知识

  • Filestream一文件流类数据持久化四部曲 2进制中讲解过

  • StringBuilder —字符串拼接类c#四部曲c#进阶中讲过

流程:

  1. 根据文件路径,获取文件的流信息

  2. 利用md5对象根据流信息计算出MD5码(字节数组形式)

  3. 将字节数组形式的MD5码转为16进制字符串

实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public string GetMD5(string filepath)
{
MD5 mD5 = new MD5CryptoServiceProvider();
StringBuilder mD5_string = new StringBuilder();
using (FileStream fs = File.OpenRead(filepath))
{
byte[] mD5_bytes = mD5.ComputeHash(fs);
fs.Close();
//转换为16进制
foreach (byte item in mD5_bytes)
{
mD5_string.Append(item.ToString("X2"));
}
}
return mD5_string.ToString();
}