0

我无法复制文件,然后验证文件的完整性。我已经尝试了所有我能想到的文件复制方法(File.Copy、filestreams、尝试进行二进制复制),但文件哈希在复制后总是不同的。我一直在四处寻找,我注意到很多人说从网络共享复制文件会导致这种情况,但我从共享中得到的结果与直接从硬盘驱动器中得到的结果相同。

//File hashing method:
private byte[] hashFile(string file)
{
    try
    {
        byte[] sourceFile = ASCIIEncoding.ASCII.GetBytes(file);
        byte[] hash = new MD5CryptoServiceProvider().ComputeHash(sourceFile);
        return hash;
...

使用这种方法,原始文件和复制的文件在每次运行时总是(单独)产生相同的哈希值,但两个哈希值不相同。有谁知道在不更改文件哈希的情况下复制文件的方法?

4

2 回答 2

3

我认为您正在散列FileName .. 而不是 Content !

所以肯定它不会计算一样!

检查文件和 byte[] sourceFile 的值和长度

于 2012-06-28T14:04:40.190 回答
3

您似乎将文件名而不是文件内容传递给哈希函数。

使用这样的东西:

byte[] hash = md5.ComputeHash(File.ReadAllBytes(filename));

或这个:

using (var stream = File.Open(filename)) {
    byte[] hash = md5.ComputeHash(stream);
}
于 2012-06-28T14:06:02.933 回答