如果我有一个文件想要监视其任何更改(而不是查看文件日期戳等),我该如何对其内容执行SHA1哈希运算?我认为这就是GIT所做的事情,所以我只是想学习如何做。
using (FileStream stream = File.OpenRead(@"C:\File.ext"))
{
using (SHA1Managed sha = new SHA1Managed())
{
byte[] checksum = sha.ComputeHash(stream);
string sendCheckSum = BitConverter.ToString(checksum)
.Replace("-", string.Empty);
}
}
定期计算校验和。
针对您所描述的具体应用程序,可以在目录中找到每个文件的SHA-1哈希值,然后将它们进行异或运算。
byte[] checksum = new byte[sha1Length];
for each file
for (int index = 0; index < sha1Length; index++)
checksum[index] ^= fileChecksum[index]
编辑后添加: 正如评论中指出的那样,这并不会真正起作用。一个特定的场景是添加两个相同的文件,它们在XOR中会互相抵消。 也许创建一个包含所有文件名、时间戳和文件哈希值的流,然后对其进行哈希处理,可以给你所需的结果。
再次编辑: 好吧,现在你改变了问题!那就算了吧!