3

ディレクトリをハッシュしてから圧縮/圧縮するアプリケーションがあります。ディレクトリを解凍するときに、どちらのフォルダにも変更を加えないか、ディレクトリを 2 つの異なる場所で 2 回解凍すると、ハッシュが一致しません。私はSHA1を使用しています。ハッシュを同じままにする方法はありますか? MD5 はこれに対応していますか?

例: MyZipped.zip。7zip/winRar/WinZip を使用してこのアーカイブを 2 回解凍してからハッシュすると、すべてのコンテンツが同じ zip から取得され、まったく同じになるはずです。しかし、それらはすべて異なるハッシュを思い付きます。

try
            {
                var path = ProcessingFolder + @"\" + inputName;
                var files = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories)
                                     .OrderBy(p => p).ToList();

                SHA1 md5 = SHA1.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);
                }

                hash = BitConverter.ToString(md5.Hash).Replace("-", "").ToLower();
4

0 に答える 0