質問

次のコードを使用してファイルのMD5SUMを計算しています-

byte[] b = System.IO.File.ReadAllBytes(file);
string sum = BitConverter.ToString(new MD5CryptoServiceProvider().ComputeHash(b));

これは正常に機能しますが、大きなファイル(〜1GB)に遭遇した場合-例えばISOイメージまたはDVD VOBファイル-メモリ不足例外が発生します。

ただし、同じファイルのcygwinでMD5SUMを約10秒で計算できます。

プログラムの大きなファイルでこれを機能させるにはどうすればよいか提案してください。

ありがとう

役に立ちましたか?

解決

別の方法を使用することをお勧めします:

MD5CryptoServiceProvider.ComputeHash(Stream)

そしてファイルで開かれた入力ストリームを渡します。この方法は、ほぼ確実に、メモリ内のファイル全体を一度に読み取らない

MD5のほとんどの実装では、 byte [] データをダイジェスト関数に一度に1チャンクずつ追加し、最後にハッシュを要求することもできます。

p>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top