C# - Двойной архив одного и того же каталога - разные значения ha sh - PullRequest
0 голосов
/ 03 марта 2020

Я архивирую те же самые файлы, но сравнение ha sh (пробовал MD5 и SHA256) отличается. Я читал, что сравнивать zip-файлы невозможно, потому что они как-то всегда отличаются после повторной архивации с теми же файлами. Что я могу сделать вместо этого, чтобы создать те же архивы?

Zipping

        private string CreateZip(string path)
    {
        var targetPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\" +
                         RandomString() + ".zip";
        ZipFile.CreateFromDirectory(path, targetPath, CompressionLevel.Optimal, true);
        return targetPath;
    }

Хеширование

        static string CalculateMD5(string filename)
    {
        using (var md5 = MD5.Create())
        {
            using (var stream = File.OpenRead(filename))
            {
                var hash = md5.ComputeHash(stream);
                return BitConverter.ToString(hash).Replace("-", "").ToLowerInvariant();
            }
        }
    }

1 Ответ

1 голос
/ 03 марта 2020

Решение

Это сжатие.

Вместо использования:

CompressionLevel.Optimal

Это работает (те же значения, что и у sh):

CompressionLevel.NoCompression
...