哈希集中的C#MD5哈希
我对c#比较陌生。我目前正在学习hashset,并且理解hashset不允许hashset中有相同的元素。我的问题是,我是否能够使用md5哈希对目录中的文件进行哈希,并将它们存储在哈希集中,以便以某种方式检查重复的哈希或文件?哈希集中的C#MD5哈希,c#,hash,md5,C#,Hash,Md5,我对c#比较陌生。我目前正在学习hashset,并且理解hashset不允许hashset中有相同的元素。我的问题是,我是否能够使用md5哈希对目录中的文件进行哈希,并将它们存储在哈希集中,以便以某种方式检查重复的哈希或文件?hashset类是唯一元素的集合。HashSet类的名称空间是System.Collections.Generic。它是在.NET3.5中引入的 让我们以文件为例: static void Main(string[] args) { HashSet<strin
hashset
类是唯一元素的集合。HashSet类的名称空间是System.Collections.Generic。它是在.NET3.5中引入的
让我们以文件为例:
static void Main(string[] args)
{
HashSet<string> FileData = new HashSet<string>();
using (var md5 = MD5.Create())
{
using (var stream = File.OpenRead("C:\\FolderTest\\Document.txt"))
{
var hash = md5.ComputeHash(stream);
var data = BitConverter.ToString(hash).Replace("-", "").ToLowerInvariant();
FileData.Add(data);
}
using (var stream = File.OpenRead("C:\\FolderTest\\Document.txt"))
{
var hash = md5.ComputeHash(stream);
var data = BitConverter.ToString(hash).Replace("-", "").ToLowerInvariant();
FileData.Add(data);
}
using (var stream = File.OpenRead("C:\\FolderTest\\Document2.txt"))
{
var hash = md5.ComputeHash(stream);
var data = BitConverter.ToString(hash).Replace("-", "").ToLowerInvariant();
FileData.Add(data);
}
}
foreach (var file in FileData)
{
Console.WriteLine(file);
}
Console.ReadKey();
}
static void Main(字符串[]args)
{
HashSet FileData=新的HashSet();
使用(var md5=md5.Create())
{
使用(var stream=File.OpenRead(“C:\\FolderTest\\Document.txt”))
{
var hash=md5.ComputeHash(流);
var data=BitConverter.ToString(散列).Replace(“-”,”).ToLowerInvariant();
FileData.Add(数据);
}
使用(var stream=File.OpenRead(“C:\\FolderTest\\Document.txt”))
{
var hash=md5.ComputeHash(流);
var data=BitConverter.ToString(散列).Replace(“-”,”).ToLowerInvariant();
FileData.Add(数据);
}
使用(var stream=File.OpenRead(“C:\\FolderTest\\Document2.txt”))
{
var hash=md5.ComputeHash(流);
var data=BitConverter.ToString(散列).Replace(“-”,”).ToLowerInvariant();
FileData.Add(数据);
}
}
foreach(FileData中的var文件)
{
Console.WriteLine(文件);
}
Console.ReadKey();
}
在上面的代码中,我们创建了一个简单的HashSet类型HashSet
,并将字符串添加到其中。
如上所述,即使我们尝试添加一个重复的哈希数据字符串,我们也不会得到任何错误,但是当我们迭代集合时,我们找不到该字符串
之后如何比较结果取决于你;你可以转换
例如,将字节数组转换为base64,或者直接比较字节。
(请注意数组不会覆盖Equals。使用base64
正确操作更简单,但如果您确实
只对比较散列感兴趣。)
哈希集的特征:
- 当我们向
会自动增加 HashSet的容量HashSet添加元素时
- 它用于我们希望防止重复出现的情况 正在插入到集合中
- HashSet提供了许多数学集合操作,例如set 加法(并集)和集减法