MD4 ハッシュ生成ツール
任意のテキストの MD4 ハッシュをブラウザー内で即座に生成。入力は UTF-8・16進・Base64、出力は16進または Base64。無料で、アップロードなしのプライベート処理です。
すべてブラウザ内で実行されます。データがアップロードされることはあり ません。
MD4 ハッシュ生成ツールとは?
MD4 は、Ron Rivest による128ビットのハッシュ関数(RFC 1320、1990年)で、MD5、SHA-1、RIPEMD の直接の祖先にあたります。このツールは、テキストまたは生のバイト列(16進または Base64)の128ビット MD4 ダイジェストを入力に合わせて計算し、32文字の16進数または Base64 で表示します。
MD4 ハッシュ生成ツールの使い方
- ハッシュ化するテキスト に入力を入力または貼り付けます。入力するたびにダイジェストが更新されます(空欄のときは空入力のハッシュが表示されます)。
- 入力エンコーディング を選びます。テキスト (UTF-8) は文字を UTF-8 としてハッシュ化し、16進数のバイト列 や Base64 はデコードした生のバイト列をハッシュ化します。
- 出力形式(16進の小文字、16進の大文字、Base64)を選び、コピー をクリックします。
例
abc
a448017aaf21d8525fc10ae87aa6729d
3バイトの ASCII 文字列「abc」の MD4(UTF-8、16進の小文字で出力)で、標準のテストベクターです。
MD4 ハッシュ生成ツールを使うべき場面
MD4 テキストツールは、文字列のハッシュ化に使います。ドキュメントやコードにある値の再現、テストベクターの作成、API 署名の入力の比較、プログラムが出力すべき値の確認などに向いています。ただし、攻撃者から何かを守る目的では使わないでください。暗号学的に破られています。ダウンロードしたファイルの検証にも向きません。ファイルの内容をテキストボックスにコピーすると改行コードやエンコーディングが変わってしまうため、その場合は MD4 ファイルチェックサムツールを使ってください。新規の整合性チェックには SHA-256 を使ってください。
MD4 ハッシュ生成ツールの仕組み
MD4 は、メッセージの後ろに1ビットの 1、0、64ビットのリトルエンディアンのメッセージ長を付けて512ビットの倍数にパディングし、512ビットのブロックごとに、非線形関数 F・G・H、加算、左ローテーションを使って、4つの32ビットワードに対し16演算を3ラウンド実行します。最終的な4ワードをリトルエンディアンで並べたものが、128ビットのダイジェストです。テキストは最初にバイト列(既定では UTF-8)に変換されるため、同じ文字なら常に同じハッシュになります。
一般的な使用例
- ユニットテストやフィクスチャで、文字列に期待される MD4 を確認する
- デバッガー、パケットキャプチャ、プロトコル仕様からコピーした16進バイト列をハッシュ化する
- 結果が食い違う2つのプログラミング言語の MD4 出力を比較する
- テキストから決定的な識別子やキャッシュキーを生成する
- 古いシステムが保存した従来の MD4 値を再現する
セキュリティ注意事項
MD4 は完全に破られています。 衝突は手計算に近い規模の計算で見つけられます。それにもかかわらず NTLM パスワードハッシュの中核であり続けているため、NTLM ハッシュは非常に簡単に解読されます。互換性(eDonkey/ed2k リンク、NTLM の調査など)のためだけに使い、セキュリティ目的には決して使わないでください。また、素のハッシュはパスワードの保存にも向いていません。Argon2、scrypt、bcrypt のような、低速でソルト付きのパスワードハッシュを使ってください。すべての処理はブラウザー内で行われ、入力した内容がどこかに送信されることはありません。
よくある質問
MD4 は今でどこで使われていますか?
Windows NT/NTLM のパスワードハッシュは、UTF-16LE のパスワードに対する MD4 です。また ed2k(eDonkey)のファイルリンクは、ファイルのチャンクごとの MD4 ハッシュから作られます。このツールが計算するのは素の MD4 です。NTLM は UTF-16LE のバイト列に対する MD4 なので、パスワードを UTF-16LE の16進で入力する必要があります。
自分のシステムが MD4 に対応していないのはなぜですか?
OpenSSL 3 では MD4 がレガシープロバイダーに移されたため、openssl md4 や Node.js の crypto.createHash("md4") は既定では失敗することがあります。このツールはブラウザー内で MD4 を実装している(hash-wasm)ため、環境に関係なく動作します。
1文字変えただけでハッシュが大きく変わるのはなぜですか?
すべての暗号学的ハッシュが備えるように設計されたアバランシェ効果によるものです。入力の1ビットを反転すると、128ビットの出力のおよそ半分が変わるため、似た入力でも無関係なダイジェストになります。
末尾のスペースや改行は影響しますか?
はい。ハッシュはすべてのバイトを対象にするため、abc と、abc の後ろに改行が付いたものでは MD4 の値が異なります。入力に、ハッシュ化したいバイトだけが含まれていることを確認してください。