MD4 ハッシュコード計算機
出版された: 2025年2月16日 22:52:21 UTC
メッセージ ダイジェスト 4 (MD4) ハッシュ関数を使用して、テキスト入力またはファイルのアップロードに基づいてハッシュ コードを計算するハッシュ コード計算機。MD4 Hash Code Calculator
MD4 (Message Digest 4) は、1990 年に Ronald Rivest によって設計された暗号ハッシュ関数です。任意の長さの入力から、固定の 128 ビット (16 バイト) ハッシュ値を生成します。MD4 は、衝突攻撃 (同じハッシュを生成する 2 つの異なる入力を見つける) を可能にする脆弱性があるため、暗号的に破られていると現在考えられています。そのため、新しいシステムを設計する際には使用しないでください。ここでは、下位互換性のあるハッシュ コードを生成する必要がある場合に備え、MD4 を組み込んでいます。
完全開示:このページで使われているハッシュ関数の特定の実装を書いたのは私ではない。これはPHPプログラミング言語に含まれる標準関数である。私は便宜上、ウェブ・インターフェースを作成し、ここで一般に利用できるようにしただけである。
MD4ハッシュアルゴリズムについて
私は数学者ではないので、このハッシュ関数を数学者ではない他の人にも理解できるような方法で説明してみます ;-) 数学的な説明が好みであれば、他の多くの Web サイトで見つけることができます。
では、MD4 を特別なシュレッダーと考えてみましょう。ただし、紙を細断するのではなく、任意のメッセージ (手紙、パスワード、本など) を小さな固定サイズのレシートに「細断」します。メッセージの大きさに関係なく、このシュレッダーは常に 16 バイト (128 ビット) の長さ、つまり 16 進数で 32 文字の小さなレシートを作成します。
メッセージを正しく細断するには、次の 4 つの手順を実行する必要があります。
ステップ1: メッセージの準備
- 細断する前に、紙がシュレッダーにぴったり収まるように調整する必要があります。
- メッセージが短すぎる場合は、紙がちょうど収まるように、余分な空白スペース(落書きやフィラーなど)を追加します。
- 長すぎる場合は、同じサイズの複数のページに分割します。
ステップ2: シークレットスタンプを追加する
- メッセージを調整した後、元のメッセージの長さを示す秘密のスタンプを最後に追加します。
- これにより、どれだけフィラーを追加しても、シュレッダーはメッセージの元のサイズを追跡できるようになります。
ステップ 3: 細断プロセス (3 ラウンドのマジック)
- 今、メッセージはシュレッダーにかけられます。
- シュレッダーには、特別なパターンで一緒に回転する 4 つのギア (A、B、C、D) があります。
- ギアは 3 回転回転し、次の処理が行われます。
- 言葉を混ぜる
- いくつかの部分をひっくり返す
- ルービックキューブのように回す
- 異なるピースをぶつけ合わせる
- ラウンドが進むごとに、メッセージはますます混乱し、認識不能な状態になります。
ステップ4: 最終受領書
- 回転、ひっくり返し、粉砕のすべてが完了した後、シュレッダーは短い数字と文字の文字列 (ハッシュ) であるレシートを吐き出します。
- このレシートは、単語を 1 つ細断した場合でも、本全体を細断した場合でも、常に同じ長さになります。
残念ながら、時が経つにつれ、この魔法のシュレッダーは完璧ではないことがわかってきました。賢い人たちの中には、シュレッダーをだまして 2 つの異なるメッセージに対して同じ受領証を発行させる方法 (これを衝突と呼びます) と、ギアの回転を予測して偽の受領証を作成する方法を考え出した人もいます。このため、MD4 はもはや重要な情報を扱うのに安全ではないと考えられています。