C# 文件夹哈希每次都返回不同的值

C# 文件夹哈希每次都返回不同的值,c#,hash,md5,C#,Hash,Md5,对于我的应用程序,我使用一个函数来散列整个文件夹。当我在VisualStudio中运行这段代码时,它每次都会成功地为我刚刚创建的文件夹返回相同的哈希值。 但是在我创建了一个.exe并尝试了相同的方法之后,每次运行它时,它都会返回不同的哈希值。我确信文件夹中的文件没有更改。我在下面附上了哈希函数的代码。 为什么会发生这种情况??我是新来的,我不确定我是否做得对,所以如果我的问题不够清楚,我很早就道歉 public static string CreateMd5ForFolder(strin

对于我的应用程序,我使用一个函数来散列整个文件夹。当我在VisualStudio中运行这段代码时,它每次都会成功地为我刚刚创建的文件夹返回相同的哈希值。 但是在我创建了一个.exe并尝试了相同的方法之后,每次运行它时,它都会返回不同的哈希值。我确信文件夹中的文件没有更改。我在下面附上了哈希函数的代码。 为什么会发生这种情况??我是新来的,我不确定我是否做得对,所以如果我的问题不够清楚,我很早就道歉

    public static string CreateMd5ForFolder(string path)
    {
        // assuming you want to include nested folders
        var files = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories)
                             .OrderBy(p => p).ToList();

        MD5 md5 = MD5.Create();

        for (int i = 0; i < files.Count; i++)
        {
            string file = files[i];

            // hash path
            string relativePath = file.Substring(path.Length + 1);
            byte[] pathBytes = Encoding.UTF8.GetBytes(relativePath.ToLower());
            md5.TransformBlock(pathBytes, 0, pathBytes.Length, pathBytes, 0);

            // hash contents
            byte[] contentBytes = File.ReadAllBytes(file);
            if (i == files.Count - 1)
                md5.TransformFinalBlock(contentBytes, 0, contentBytes.Length);
            else
                md5.TransformBlock(contentBytes, 0, contentBytes.Length, contentBytes, 0);
        }

        return BitConverter.ToString(md5.Hash).Replace("-", "").ToLower();
公共静态字符串CreateMd5ForFolder(字符串路径)
{
//假设要包括嵌套文件夹
var files=Directory.GetFiles(路径“***”,SearchOption.AllDirectories)
.OrderBy(p=>p.ToList();
MD5 MD5=MD5.Create();
对于(int i=0;i
您已经在一个文件夹上测试过了,并且您已经确认该文件夹没有被任何方式修改?当您在vs中运行它时,它仍然会创建一个.exe文件(您可以在
bin\debug
bin\release
中找到该文件,因此它应该是相同的。我正在从“C:\Users\User\AppData\Local\Google\Chrome\User Data”复制所有文件(谷歌浏览器文件)使用File.Copy命令将文件复制到另一个目标文件夹。最后,我只是对目标文件夹进行了哈希处理。在这两个文件夹之间没有打开Chrome浏览器,因此我确信这些文件没有被更改。你能跟我开玩笑,用一个包含2个简单文本文件的简单文件夹测试一下吗?不确定你在Chrome用户数据文件夹中可能拥有哪些权限和文件类型(r…:)不客气。对于将来的参考,一定要先在小案例中尝试你的理论。