在C#中,可以使用System.Security.Cryptography
命名空間下的MD5
類來實現MD5的分塊計算。以下是一個簡單的示例代碼:
using System;
using System.IO;
using System.Security.Cryptography;
public class MD5ChunkCalculator
{
public static byte[] CalculateMD5Hash(Stream stream)
{
using (MD5 md5 = MD5.Create())
{
const int chunkSize = 4096;
byte[] buffer = new byte[chunkSize];
int bytesRead;
while ((bytesRead = stream.Read(buffer, 0, chunkSize)) > 0)
{
md5.TransformBlock(buffer, 0, bytesRead, null, 0);
}
md5.TransformFinalBlock(new byte[0], 0, 0);
return md5.Hash;
}
}
}
在這個示例中,CalculateMD5Hash
方法接受一個Stream
對象作為輸入,然后使用大小為4096的緩沖區來逐塊讀取輸入流并更新MD5哈希值。最后返回計算得到的MD5哈希值。
可以使用以下代碼來測試這個方法:
using System;
public class Program
{
public static void Main()
{
using (var stream = File.OpenRead("file.txt"))
{
byte[] hash = MD5ChunkCalculator.CalculateMD5Hash(stream);
Console.WriteLine(BitConverter.ToString(hash).Replace("-", "").ToLower());
}
}
}
在這個示例中,假設要計算文件file.txt
的MD5哈希值,可以通過File.OpenRead
方法打開文件流,并調用CalculateMD5Hash
方法來計算MD5哈希值。最后使用BitConverter.ToString
方法將哈希值轉換為十六進制字符串輸出。