在处理大文件时,可以使用流的方式逐块读取文件内容并对每个文件块进行MD5计算,最后将所有计算出的MD5值合并成一个最终的MD5值。
以下是一个示例代码:
using System;
using System.IO;
using System.Security.Cryptography;
public static class MD5Helper
{
public static string CalculateMD5(string filePath)
{
using (var md5 = MD5.Create())
{
using (var stream = File.OpenRead(filePath))
{
byte[] buffer = new byte[8192];
int bytesRead;
while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) > 0)
{
md5.TransformBlock(buffer, 0, bytesRead, buffer, 0);
}
md5.TransformFinalBlock(buffer, 0, 0);
}
return BitConverter.ToString(md5.Hash).Replace("-", "").ToLower();
}
}
}
在上面的示例中,CalculateMD5
方法接收一个文件路径作为参数,使用MD5.Create()
创建一个MD5实例。然后使用File.OpenRead(filePath)
打开文件流,逐块读取文件内容并调用md5.TransformBlock
方法对每个文件块进行MD5计算。最后调用md5.TransformFinalBlock
方法获取最终的MD5值并返回。