ディレクトリをハッシュしてから圧縮/圧縮するアプリケーションがあります。ディレクトリを解凍するときに、どちらのフォルダにも変更を加えないか、ディレクトリを 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();