3

MD5 ハッシュがセキュリティ上推奨されなくなったことは承知していますが、ダウンロード/転送後にファイルが破損していないことを確認するためのチェックサムとして使用していますが、それでも問題ないと思いました。ギガバイトを超えるファイルでこの方法を使用した後、保存されたハッシュと生成されたハッシュが一致しないことがわかりました。これは、USBスティックを介してあるコンピューターから別のコンピューターに転送した後です。オンラインで検索したところ、一貫性のないハッシュを作成している可能性のある大きなファイルへの参照がいくつか見つかりましたが、決定的なものは何も見つかりませんでした。

ComputeHash(Stream inputStream)ofを使っMD5CryptoServiceProviderて転送前後のハッシュを作成しているので、異なる言語間などでバイト形式がめちゃくちゃになることはありません。また、ファイルからハッシュを再度作成しようとしましたが、2 回目は一致するハッシュが正常に作成されたようです。運が悪かっただけで、ファイルを USB スティックにコピーしたり、USB スティックからコピーしたりした後、実際にファイルが破損してしまったのでしょうか? それとも、これは MD5 の既知の問題であり、完全に破棄する必要がありますか? もしそうなら、理想的にはC#の標準としても利用できる最良の代替品は何でしょうか.SHA1は次善の選択肢ですか?

4

2 に答える 2

5

いいえ、この目的では MD5 に問題はありません。ハッシュは常に同一です。ファイルに何らかの違いがあるはずです。一部の 16 進エディタに見られるようなバイナリ diff ツールを使用して、何かが異なることを自分で確認できます。

md5sumまたはHashTabなどの別の MD5 ツールを使用して、計算が正しいことを確認できます。


MD5 が推奨されなくなった理由は、MD5 が機能しないなどの理由ではありません。これは、衝突 (2 つの異なる入力に対して同じハッシュを生成する) の確率が十分に高いため、攻撃者が意図的に衝突を生成してセキュリティ機能を回避できるからです。

これはまさに、Flame マルウェアがMicrosoft 署名を偽装するために行ったことです。

于 2012-07-03T13:24:52.410 に答える
4

一部のデータのMD5ハッシュは、そのデータのサイズに関係なく、まったく同じデータの2番目のMD5ハッシュとまったく同じになります。大きなファイルに対するMD5の唯一の問題は、場合によっては、2つの異なるファイルに対して同じハッシュを取得する可能性があることです。しかし、これはばかげてありそうもないことです。

ただし、大きなデータスペースを小さなハッシュスペースに変換するため、SHA1やその他のハッシュアルゴリズムにも同じことが当てはまります。

USBバスまたはフラッシュデバイス自体のいずれかで、転送中に破損が発生した可能性が非常に高いようです。

于 2012-07-03T13:26:40.160 に答える