Web便利ツール

ハッシュ生成ツール

このツールについて

使い方

テキストを入力するか、ファイルを選択すると、各アルゴリズムのハッシュ値をリアルタイムで計算します。

対応アルゴリズム

  • MD5: 128ビット。チェックサム用途向き (暗号用途には非推奨)
  • SHA-1: 160ビット。Git のコミットハッシュなどで使用 (暗号用途には非推奨)
  • SHA-256: 256ビット。現在最も広く使われるセキュアなハッシュ
  • SHA-384: 384ビット。SHA-512 の切り詰め版
  • SHA-512: 512ビット。最も長いハッシュ値を生成

プライバシーについて

すべての計算はブラウザ内で完結します。テキストやファイルがサーバーに送信されることはありません。

よくある質問

Q. パスワード保管に MD5 や SHA-256 を使ってもよいですか?
A. 推奨されません。汎用ハッシュ関数は計算が高速で、レインボーテーブルや GPU を使った総当たり攻撃に弱いためです。パスワード保管には bcrypt / scrypt / Argon2 のように計算コストを意図的に高くしたアルゴリズムを利用してください。
Q. 大きなファイルでもハッシュ計算できますか?
A. ブラウザのメモリが許す範囲で計算できます。Web Crypto API を利用しているため、数百 MB 程度のファイルは比較的速く計算できますが、ギガバイト級のファイルではブラウザがフリーズする可能性があります。
Q. SHA-256 と SHA-3 の違いは何ですか?
A. SHA-256 (SHA-2 ファミリー) は MD5 / SHA-1 と同じ Merkle-Damgård 構造を採用しており、SHA-3 はまったく異なるスポンジ構造に基づきます。現状 SHA-2 系統に致命的な脆弱性は見つかっておらず、互換性の高さから SHA-256 が広く使われています。
Q. ファイルのダウンロード検証で使うのはどのアルゴリズムが適切ですか?
A. 配布元が公開しているハッシュ値と同じアルゴリズムを選んでください。最近は SHA-256 が一般的ですが、過去のソフトウェアでは MD5 や SHA-1 が併記されていることもあります。
Q. 同じテキストでも改行コードが違うとハッシュ値も変わりますか?
A. 変わります。\n (LF) と \r\n (CRLF) はバイト列が異なるため、ハッシュ値も異なります。改行を意識せずに比較したい場合は事前に統一してください。

豆知識

ハッシュ関数とは

ハッシュ関数は、任意の長さのデータを固定長の値 (ハッシュ値) に変換する関数です。 同じ入力からは必ず同じハッシュ値が生成されますが、ハッシュ値から元のデータを復元することはできません (一方向性)。 わずか1ビットでも入力が変われば、ハッシュ値は全く別のものになります (雪崩効果)。 これらの性質から、パスワードの保存、ファイルの改ざん検出、デジタル署名、ブロックチェーンなどに使われています。

アルゴリズムの使い分け

用途に応じてアルゴリズムを選びます。ファイルのダウンロード検証など「改ざん検知が主目的で攻撃者を想定しない」場面では MD5 や SHA-1 でも実用上問題ありません。 一方、パスワード保管・デジタル署名・証明書など「攻撃者の存在を想定する」場面では、衝突耐性が重要になるため SHA-256 以上が推奨されます。 なお、パスワード保管には単純なハッシュではなく bcrypt / Argon2 などの専用アルゴリズムが望ましいとされています。

MD5 と SHA-1 が暗号用途で非推奨な理由

MD5 は1996年に衝突可能性が指摘され、2004年には実用的な衝突が実証されました。 SHA-1 も2017年に Google と CWI Amsterdam のチームが実際の衝突を計算で生成 (SHAttered 攻撃) しました。 異なるデータから同じハッシュ値を意図的に作れる以上、署名や証明書のような「そのハッシュ値はこのデータのものだ」と保証する用途には使えません。 ただしチェックサム用途では依然として有用なため、用途を見極めて使い分けます。

SHA-256 と Bitcoin

Bitcoin のマイニングでは SHA-256 を2回連続で適用する「ダブル SHA-256」が使われています。 マイナーは nonce (使い捨ての数値) を変えながら、先頭に一定数のゼロが並ぶハッシュ値を見つける競争をしています。 この計算量の大きさがブロックチェーンの改ざん耐性を支えています。

参考リンク

このツールの更新履歴

  • 新ツール

    ハッシュ生成ツールを公開

    テキストやファイルの MD5・SHA-1・SHA-256・SHA-384・SHA-512 ハッシュ値をブラウザ内で計算します。