4

ダウンロード後のファイルの整合性を保証しようとしています。ファイルの MD5 をデータベースに保存し、ダウンロード後にその MD5 をファイルと比較します。ただし、ダウンロード後にファイルをハッシュすると、常に異なる MD5 結果が得られます。ハッシュされているバイト配列に、最後に変更されたようなメタデータが含まれていて、ハッシュが破棄されているかどうか疑問に思っています。他の誰かが以前にこれを行ったことがある場合は、助けていただければ幸いです。

4

6 に答える 6

5

MD5 ハッシュはファイルの内容に基づいて計算され、ドキュメント メタデータの影響を受けません。これは、同じコンテンツから開始した場合、常に同じ結果を生成する決定論的なプロセスです (ただし、衝突により MD5 署名を偽造する方法はあります)。

ファイルの MD5 ハッシュをどのように作成していますか? 別のツールを使用して問題を再現してみましたか?

異なる MD5 署名がある場合、ファイル何らかの形で異なります。

EOL 文字の以前の提案、または ASCII モードでのバイナリ ファイルの転送は、ファイルが変更される可能性が非常に高い理由です。差分ツールを使用すると、ファイルがどこでどのように異なるかを特定するのに役立ちます。ファイルがバイナリ形式の場合は、バイナリ差分ツールを使用してみてください。

于 2008-11-14T01:47:41.977 に答える
2

確認する簡単な方法: 2 つの異なるダウンロードに対して diff を実行します (バイナリを想定していますが、そうではない可能性があります)。これにより、問題をすばやく特定できます。

于 2008-11-14T01:21:49.893 に答える
0

ここで完全に間違っていない場合、md5 ハッシュはタイムスタンプやその他のメタデータではなく、実際のデータに対してのみ機能します。ftp でテキスト ファイルを転送している可能性があります。その場合、ftpclient はシステムに合わせて改行文字を書き換える可能性があり、ハッシュは異なります。

于 2008-11-13T21:51:52.250 に答える
0

ダウンロードに FTP を使用している場合、次のような問題が考えられます。

  • ASCII の代わりのバイナリ ダウンロード オプション (またはその逆)。

  • EOL の扱いが異なる Windows から Unix などのプラットフォーム間での転送。

于 2008-11-13T21:53:31.890 に答える
0

ファイルの特定の部分に対してのみハッシュすることで理論をテストできます...たとえば、中央の50%...それが異なる場合は、タイムスタンプなどだけではないことがわかります...より良い回答を得るために、さらに情報を提供してください...

于 2008-11-13T21:57:04.720 に答える
0

ファイル名やその他の文字列ではなく、ファイルのバイトで実際に MD5 を計算していることを確認してください。

于 2008-11-19T23:59:29.477 に答える