MD2 ハッシュコード計算機
出版された: 2025年2月16日 22:38:24 UTC
メッセージ ダイジェスト 2 (MD2) ハッシュ関数を使用して、テキスト入力またはファイルのアップロードに基づいてハッシュ コードを計算するハッシュ コード計算機。MD2 Hash Code Calculator
MD2 (Message Digest 2) ハッシュ関数は、1989 年に Ronald Rivest によって設計された暗号化ハッシュ関数です。8 ビット コンピュータ用に特に最適化されています。現在では暗号化の目的には時代遅れで安全ではないと考えられていますが、下位互換性のあるハッシュ コードを計算する必要がある場合に備えてここに含まれています。新しいシステムを設計するときには使用しないでください。
完全開示:このページで使われているハッシュ関数の特定の実装を書いたのは私ではない。これはPHPプログラミング言語に含まれる標準関数である。私は便宜上、ウェブ・インターフェースを作成し、ここで一般に利用できるようにしただけである。
MD2ハッシュアルゴリズムについて
私は簡単な数学は得意ですが、非常に得意というわけではなく、決して数学者だとは思っていません。そこで、このハッシュ関数の仕組みを数学者以外の人にもわかるように説明しようと思います。完全な数学バージョンがお好みなら、Web 上の他の多くの場所で簡単に見つけることができます ;-)
さて、どんな材料(あなたのメッセージ)でも、常に 1 枚の小さな 16 ピースのチョコレート バー(ハッシュ)にできるレシピがあると想像してください。材料が何であっても、また材料の大きさや小ささに関係なく、常に同じサイズのチョコレート バーが完成します。
このレシピの目標は次のとおりです。
- チョコレートを見ただけでは、その原材料を推測することはできません。
- 材料がほんの少し変わるだけでもチョコレートの味は完全に変わるので、誰かが材料やレシピを変えたかどうかはすぐにわかります。
チョコレートバーの作成は、次の 3 つのステップで行われます。
ステップ 1: メッセージを詰める (材料を合わせる)
ちょうど 16 個のリンゴ (または材料) が入るバスケットがあるとします。しかし、リンゴが 14 個しかなかったらどうしますか? バスケットを満たすには、さらに 2 個追加する必要があります。足りない場合は、リンゴを追加すればいいだけです。例:
- さらに 2 個必要な場合は、リンゴを 2 個追加します。
- 16 個を超える場合は、次のバスケットを埋める必要があります。たとえば、28 個ある場合は、4 を加えて 32 (2 倍の 16) にします。
これにより、次のステップに進む前にすべてのバスケットがいっぱいになっていることが確認されます。
ステップ 2: チェックサムの追加 (秘密の材料リスト)
次に、バスケット内のすべてに基づいて秘密の材料リストを作成します。
- それぞれのバスケットを調べて、リンゴを見て、それぞれの秘密のコードを書き留めます。
- これは単なるコピーではありません。奇妙な方法で数字を足し合わせるようなもので、誰かがこっそりと侵入してリンゴを変えたとしても、リストは間違って見えるでしょう。
このリストは、材料が後で変更されていないことを再確認するのに役立ちます。
ステップ 3: すべてを混ぜる (マジック ブレンダー)
次は楽しい部分、つまり混ぜる作業です!
- 48 スロットのブレンダーをお持ちです。
- 以下を追加します:
- リンゴ(あなたのメッセージ)。
- 以前からの古い混合物(最初のバッチでは空から始まります)。
- 最初の 2 つを組み合わせたものです。
次に、混ぜます。ただし、1 回だけではありません。18 回混ぜ、毎回速度と方向を変えます。これは通常の混ぜ方ではありません。毎回、特別な方法で混ぜるため、リンゴが 1 つ違うだけでも、チョコレート全体の味が変わります。
最後のチョコレートバー(ハッシュ)
ここまで混ぜたら、混合物の上から 16 個だけ取り出します。これが最終的なチョコレート バー、つまり MD2 ハッシュです。見た目は元のリンゴとはまったく似ておらず、チョコレートだけから元の材料を推測しようとしても、絶対に無理です。
覚えて:
- 同じ材料 = 同じチョコレート。
- リンゴを1個変えるだけで、チョコレートが全く違ったものになります。
- 後戻りはできません。チョコレートだけでは元のリンゴを判別することはできません。