web-dev-qa-db-ja.com

ファイルのMD5を変更する方法

md5sumを使用してファイルのMD5を取得できるため、私の質問は次のとおりです。

  1. MD5を変更できますか?
  2. MD5の変更方法は?
6
Rong Nguyen

md5sumは、128ビットMD5ハッシュを計算して検証します。 MD5ハッシュは、ファイルのコンパクトなデジタルフィンガープリントとして機能します。同じハッシュを持つように特別に作成されていない限り、現実世界の2つの同一でないファイルが同じMD5ハッシュを持つことはほとんどありません。

md5sumはファイルの整合性を検証するために使用されます。ファイルを変更すると、実質的にファイルのMD5ハッシュが変更されるためです。最も一般的には、md5sumを使用して、ファイル転送の失敗、ディスクエラー、または悪意のない干渉の結果としてファイルが変更されていないことを確認します。

詳しくは Wikipedia をご覧ください

変更できますか?

いいえ。ファイルの内容が同じである限り、ファイルのmd5sumを変更することはできません。そして、それが唯一の目的です。内容のみを変更することにより、ファイルのmd5sum値を変更できます。

19
souravc

md5sumは、ファイルコンテンツのMD5ハッシュを計算します。 MD5アルゴリズムはランダム性を使用しません(決定論的です)。基本的には、入力(ファイルの内容)で実行する数学的な命令のリストです。同じ入力を提供するたびに、まったく同じ方法で処理され、同じ出力が得られます。数学と同じように、3×7は何度試行しても常に21を返します。

出力を変更する唯一の方法は、入力を変更することです。

7
gronostaj

@ sauravc には同意しますが、ファイルが破損する可能性を気にしない場合は、それを行う方法があります。

何らかの方法でファイルを変更した場合、MD5を再計算できます。

好みのエディターでファイルを開き、加算または減算を行ってから再度保存することにより、ファイルを潜在的に変更できます。

コマンドライン経由でこれをすばやく行う方法が必要な場合は、次のようにddまたはtruncateのいずれかを使用できます。

dd if=/dev/zero bs=1 count=10 >> <yourfile>.<ext>

または

truncate -s +10 <yourfile>.<ext>

どちらのコマンドでも、ファイルの最後に10バイトを追加する必要があります。これは、MD5(次回の計算時)が異なることを意味するはずです。

注意してください

これはファイルを破損する可能性があるため、最初に徹底的にテストする必要があります。

4
ThatGuy