如果我有一个文件要监视任何更改(除了查看文件日期戳等)。
如何对其内容执行 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 中相互抵消。也许创建一个包含所有文件名、时间戳和文件哈希的流,然后进行哈希处理,这将为您提供所需的内容。
再次编辑:好的,现在你已经改变了你的问题!所以没关系!