有沒有辦法使用SHA1散列文件夾中的所有內容?我能夠使用MD5來做到這一點,但是我擔心MD5會碰到碰撞。我正在嘗試構建一個應用程序來檢查本地文件,以查看它們是否與使用哈希的在線版本匹配。我將如何使用SHA1散列文件夾
這裏是我用MD5使用的代碼:
var path = leftCheckTextbox.Text;
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];
string relativePath = file.Substring(path.Length + 1);
byte[] pathBytes = Encoding.UTF8.GetBytes(relativePath.ToLower());
md5.TransformBlock(pathBytes, 0, pathBytes.Length, pathBytes, 0);
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);
}
leftHash = BitConverter.ToString(md5.Hash).Replace("-", "").ToLower();
你想要整個文件夾的單個散列?我不知道是否有標準的方法來做到這一點,但你可以考慮壓縮一切,然後散列單個文件嗎? –
如果你能用MD5做到這一點,爲什麼不用SHA1? – usr
您是否打算包含(a)元數據(哪個?)(b)對象數據(c)? – sehe