计算C#中文件内容的哈希值?
我需要计算C#中文件内容的哈希值?所以,我可以在我的应用程序中比较两个文件哈希。我已经搜索过了,但没有找到 您应该更好地搜索;)强>计算C#中文件内容的哈希值?,c#,C#,我需要计算C#中文件内容的哈希值?所以,我可以在我的应用程序中比较两个文件哈希。我已经搜索过了,但没有找到 您应该更好地搜索;) 您可以使用MD5CryptoServiceProvider,它可以处理基于文本的文件以及二进制文件 byte[] myFileData = File.ReadAllBytes(myFileName); byte[] myHash = MD5.Create().ComputeHash(myFileData); 或者。。。如果使用大文件,并且不希望将整个文件加载到内存中
您可以使用
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);
您可以将两个文件中的字节数组与可枚举.SequenceEqual
进行比较:
myHash1.SequenceEqual(myHash2);
您还可以尝试创建一个CRC计算器。请参阅:是否确实需要将整个字节数组转换为字符串?我似乎需要做很多工作来比较这两个散列。你应该在流上使用
use
,而不是显式调用Close()
。真的需要将整个文件转换为字节数组吗?@svick:我更新了答案。谢谢你的意见@MartinMulder,我能用字典来存储散列并用TryGetValue来比较吗?)散列的散列(散列的散列)@MartinMulder,嗯……它不适用于字典……@Admilland:我想你的问题完全离题了。您的问题是关于在字典中使用字节数组作为键。也许你可以提出一个新问题。
byte[] myHash;
using (var md5 = MD5.Create())
using (var stream = File.OpenRead(myFileName))
myHash = md5.ComputeHash(stream);
myHash1.SequenceEqual(myHash2);