在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
方法将哈希值转换为十六进制字符串输出。