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;
...

この方法を使用すると、元のファイルとコピーされたファイルは、実行ごとに常に同じハッシュを(個別に)生成しますが、2つのハッシュは同じではありません。ファイルハッシュを変更せずにファイルをコピーする方法を知っている人はいますか?

4

2 に答える 2

3

Content ではなくFileName .. をハッシュしていると思います。

同じように計算されないことを確認してください!

file と 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 に答える