System.Security.Cryptography.MD5 哈希为不同时间创建的相同文件内容生成两个不同的哈希

问题描述 投票:0回答:1

我有一个非常简单的应用程序,它尝试计算两个不同文件的 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 哈希值就是这样工作的吗?我的印象是他们只对文件本身的内容进行哈希处理。

谢谢!

c# cryptography md5
1个回答
0
投票

正如 Damien_The_Unknowner 指出的,在十六进制编辑器中打开内容后,其中一个文件的开头有三个额外的字节:

byte differences in files

我不确定这些字节是如何添加的,但它确实解释了为什么哈希值不同。

© www.soinside.com 2019 - 2024. All rights reserved.