在處理大文件時,可以使用流的方式逐塊讀取文件內容并對每個文件塊進行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值并返回。