我有一个非常简单的应用程序,它尝试计算两个不同文件的 MD5 哈希值。
文件的内容只是文本:
abc
(我检查了空格和换行符 - 它们是相同的)。
我测试了同一分钟创建的两个文件,它们都返回相同的哈希值。然而,当测试两个文件时,其中一个文件是在第一个文件几分钟后创建的,它们产生了不同的哈希值(不确定创建时间是否是这里的问题,但以防万一它是相关的)。
这是用于生成哈希值的代码:
var file1 = new FileStream("./file1.txt", FileMode.Open);
var file2 = new FileStream("./file2.txt", FileMode.Open);
using var md51 = System.Security.Cryptography.MD5.Create();
var bytes1 = md51.ComputeHash(file1);
using var md52 = System.Security.Cryptography.MD5.Create();
var bytes2 = md52.ComputeHash(file2);
Console.WriteLine(string.Join(", ", bytes1.Select(b => b.ToString())));
Console.WriteLine(string.Join(", ", bytes2.Select(b => b.ToString())));
但是,该过程生成两个不同的哈希值:
83, 164, 146, 222, 186, 225, 199, 171, 246, 97, 88, 19, 180, 181, 202, 153
144, 1, 80, 152, 60, 210, 79, 176, 214, 150, 63, 125, 40, 225, 127, 114
MD5 哈希值就是这样工作的吗?我的印象是他们只对文件本身的内容进行哈希处理。
谢谢!