我需要在C#中计算文件内容的哈希值,这样我就可以在我的应用程序中比较两个文件的哈希值。我已经进行了搜索但没有找到。
我需要在C#中计算文件内容的哈希值,这样我就可以在我的应用程序中比较两个文件的哈希值。我已经进行了搜索但没有找到。
您可以使用 MD5CryptoServiceProvider
,它可以用于文本文件和二进制文件。
byte[] myFileData = File.ReadAllBytes(myFileName);
byte[] myHash = MD5.Create().ComputeHash(myFileData);
或者...如果您使用大文件并且不想将整个文件加载到内存中:
byte[] myHash;
using (var md5 = MD5.Create())
using (var stream = File.OpenRead(myFileName))
myHash = md5.ComputeHash(stream);
您可以使用Enumerable.SequenceEqual
来比较两个文件的字节数组:myHash1.SequenceEqual(myHash2);
你也可以尝试创建一个 CRC 计算器。参见:http://damieng.com/blog/2006/08/08/calculating_crc32_in_c_and_net
using System.IO;
using System.Text;
using System.Security.Cryptography;
protected string GetMD5HashFromFile(string fileName)
{
FileStream file = new FileStream(fileName, FileMode.Open);
MD5 md5 = new MD5CryptoServiceProvider();
byte[] retVal = md5.ComputeHash(file);
file.Close();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < retVal.Length; i++)
{
sb.Append(retVal[i].ToString("x2"));
}
return sb.ToString();
}
像这样将您的文件传递给此函数。
GetMD5HashFromFile("text1.txt");
GetMD5HashFromFile("text2.txt");
using
而不是显式调用Close()
。 - svick