我想使其变得非常清晰和简单。如果我有1GB的ram并试图计算2gb文件的md5哈希怎么办?目前,我正在这样做:
private static string Md5Hash(byte[] input)
{
byte[] hash = MD5.Create().ComputeHash(input);
StringBuilder builder = new StringBuilder(32);
foreach(byte b in hash)
{ builder.Append(b.ToString("X2")); }
return builder.ToString();
}
// I'm using it like: 'Md5.AsString(File.ReadAllBytes(filePath))'
那么您有什么建议?
将文件完全加载到内存后,不使用计算文件的哈希值,而使用需要使用的重载Stream
。
byte[] hash;
using (Stream input = File.OpenRead("Filename"))
{
hash = MD5.Create().ComputeHash(input);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句