我无法复制文件,然后再验证文件的完整性。我已经尝试了我能想到的每个文件复制方法(File.Copy,文件流,尝试进行二进制复制)但复制后文件哈希总是不同。我一直在搜索,我注意到很多人说从网络共享中复制文件可能会导致这种情况,但我从共享中得到的结果与直接从硬盘驱动器中得到的结果相同。
//File hashing method:
private byte[] hashFile(string file)
{
try
{
byte[] sourceFile = ASCIIEncoding.ASCII.GetBytes(file);
byte[] hash = new MD5CryptoServiceProvider().ComputeHash(sourceFile);
return hash;
...
使用此方法,原始文件和复制的文件在每次运行时始终生成相同的哈希(单独),但两个哈希值不同。有没有人知道在不改变文件哈希值的情况下复制文件的方法?
答案 0 :(得分:3)
我认为你正在散列 FileName ..而不是内容!
所以确定它的计算方法不一样!
检查文件的值和长度以及byte [] sourceFile
答案 1 :(得分:3)
您似乎正在将文件名而不是文件内容传递给哈希函数。
使用类似的东西:
byte[] hash = md5.ComputeHash(File.ReadAllBytes(filename));
或者这个:
using (var stream = File.Open(filename)) {
byte[] hash = md5.ComputeHash(stream);
}