ハッシュ生成ツール

テキストを入力するだけで、SHA-256・SHA-1・MD5のハッシュ値をリアルタイムで同時に生成します。日本語(UTF-8)に完全対応。

🔐 ハッシュ値生成

入力テキスト
入力: 0 バイト
SHA-256 256 bit / 64文字
ハッシュ値がここに表示されます
SHA-1 160 bit / 40文字
ハッシュ値がここに表示されます
MD5 128 bit / 32文字
ハッシュ値がここに表示されます

ハッシュ関数とは?

ハッシュ関数とは、任意の長さのデータを入力として受け取り、固定長のビット列(ハッシュ値)を出力する数学的な関数のことです。同じ入力からは常に同じハッシュ値が生成され、入力データが1文字でも変わると出力されるハッシュ値は大きく変化します。この性質は「雪崩効果(アバランチ効果)」と呼ばれ、データの改ざん検知に欠かせない特性です。ハッシュ値のことを「ダイジェスト」や「フィンガープリント(指紋)」とも呼びます。

ハッシュ関数の基本的な性質

一方向性(不可逆性)

暗号学的ハッシュ関数の最も重要な性質が「一方向性」です。元のデータからハッシュ値を計算することは簡単ですが、ハッシュ値から元のデータを逆算することは計算量的に不可能です。たとえば、SHA-256で生成された64文字のハッシュ値を見ても、元の入力テキストが何であったかを推定することはできません。この性質があるからこそ、パスワードの保存にハッシュ関数が利用されます。データベースにはハッシュ値のみを保存し、ログイン時には入力されたパスワードのハッシュ値と照合することで、元のパスワードを保存せずに認証を実現できます。

衝突耐性

衝突耐性とは、異なる2つの入力から同一のハッシュ値が生成される(衝突が起きる)ことが実質的に不可能であるという性質です。理論的には、有限のビット長に無限の入力を圧縮するため衝突は必ず存在しますが、実用的な計算時間内に衝突を見つけることが極めて困難であることが求められます。衝突耐性が破られた場合、デジタル署名やファイル整合性チェックの信頼性が根本から揺らぎます。

ハッシュ関数の代表的な用途

パスワードの安全な保存

Webサービスやアプリケーションでは、ユーザーのパスワードをそのまま保存するのではなく、ハッシュ化した値をデータベースに格納します。万が一データベースが漏洩しても、ハッシュ値から元のパスワードを復元できないため、被害を最小限に抑えることができます。実際の運用では、ソルト(ランダムな文字列)を付加してからハッシュ化することで、レインボーテーブル攻撃への耐性を高めます。

ファイルの整合性検証

ソフトウェアの配布サイトでは、ダウンロードファイルのSHA-256ハッシュ値が公開されていることがあります。ダウンロードしたファイルのハッシュ値を計算し、公開されている値と比較することで、ファイルが改ざんされていないことや、通信中にデータが破損していないことを確認できます。

デジタル署名

デジタル署名では、まず文書のハッシュ値を計算し、そのハッシュ値を秘密鍵で暗号化します。受信者は公開鍵でハッシュ値を復号し、文書から再計算したハッシュ値と比較することで、文書が改ざんされていないことと送信者の身元を確認できます。この仕組みは、電子契約やSSL/TLS通信など、現代のインターネットインフラの根幹を支えています。

SHA-256・SHA-1・MD5の比較

MD5(Message Digest 5)

MD5は1991年にRonald Rivestによって設計された、128ビット(32文字)のハッシュ値を出力するアルゴリズムです。かつては広く使われていましたが、2004年に衝突攻撃が実証され、現在ではセキュリティ用途には推奨されていません。ファイルのチェックサム確認など、改ざん耐性を必要としない場面では依然として使われることがありますが、新規の開発ではSHA-256への移行が強く推奨されます。

SHA-1(Secure Hash Algorithm 1)

SHA-1は160ビット(40文字)のハッシュ値を出力するアルゴリズムで、1995年にNSA(米国国家安全保障局)が設計しました。長年にわたりSSL証明書やGitのコミットハッシュなどで使われてきましたが、2017年にGoogleが実際の衝突例(SHAttered攻撃)を公表したことで、セキュリティ用途での使用は事実上終了しました。主要なWebブラウザもSHA-1証明書のサポートを打ち切っています。

SHA-256(Secure Hash Algorithm 256)

SHA-256はSHA-2ファミリーの一つで、256ビット(64文字)のハッシュ値を出力します。現時点で衝突攻撃は発見されておらず、SSL/TLS証明書、ブロックチェーン、電子署名など、セキュリティが求められるあらゆる場面で標準的に使用されています。新規のシステム開発では、特別な理由がない限りSHA-256以上を採用すべきです。

なぜMD5をセキュリティ用途で使うべきではないのか

MD5の衝突耐性が破られたことは、単なる理論上の問題ではありません。実際に、異なる内容のPDFファイルでありながら同じMD5ハッシュ値を持つファイルが作成可能であることが実証されています。これは、MD5ハッシュ値による整合性チェックが信頼できないことを意味します。悪意ある攻撃者が、正規のファイルと同じMD5ハッシュを持つマルウェアを作成する可能性があるのです。SSL証明書の偽造攻撃も報告されており、MD5をセキュリティの基盤として使用することは極めて危険です。チェックサム用途であってもSHA-256への移行をお勧めします。

まとめ:ハッシュ関数は、パスワード保存・ファイル整合性検証・デジタル署名など、情報セキュリティの基盤となる技術です。MD5やSHA-1は歴史的に重要ですが衝突耐性が破られており、セキュリティ用途にはSHA-256以上を使用してください。このツールで各アルゴリズムのハッシュ値を比較し、開発やセキュリティ確認にお役立てください。