ハッシュジェネレーター
テキストやファイルのMD5・SHA-1・SHA-256・SHA-512ハッシュ、bcrypt、チェックサム照合 — ブラウザ内で完結。
ハッシュ生成ツール - MD5・SHA-1・SHA-256・SHA-512をオンラインで計算
テキストを貼り付けるか、ファイルをドロップするだけで、この無料のハッシュ生成ツールがMD5・SHA-1・SHA-256・SHA-384・SHA-512のダイジェストを同時に計算します。いくつものツールを使い分けることなく、値を並べて比較できます。別の bcrypt タブでは、パスワードハッシュの作成と照合ができます。計算はすべてブラウザー内で行われるため、大きなファイルでも端末の外には出ません。
ハッシュはデータの固定長の指紋です。1文字でも変えれば、たとえ末尾の空白ひとつでも、出力はまったく別の値になります。この性質があるからこそ、ダウンロードの検証、重複の検出、キャッシュキーの生成、そして中身を読まずに2つの版を比較する用途に使えるのです。
ハッシュ関数とは
暗号学的ハッシュ関数は、任意の長さの入力を受け取り、決まったビット数を返します。MD5は128ビット、SHA-1は160ビット、SHA-256は256ビット、SHA-512は512ビットで、通常は16進数で表示されます。同じ入力からは常に同じ値が得られ、強いアルゴリズムでは異なる入力が同じ値になることは実質的にありません。そして処理を逆向きにたどることはできません。最後の点が最も誤解されています。
どのハッシュアルゴリズムを選ぶか
| アルゴリズム | 長さ | 現在の位置づけ |
|---|---|---|
| MD5 | 16進32文字 | セキュリティ用途では破られています。キャッシュキー、ETag、重複排除などの用途には今も有効です。 |
| SHA-1 | 16進40文字 | 非推奨。衝突が実証済みです。古いGitオブジェクトや旧証明書にまだ残っています。 |
| SHA-256 | 16進64文字 | 現在の標準。ファイルのチェックサム、署名、ブロックチェーン、APIリクエストの署名に使われます。 |
| SHA-512 | 16進128文字 | SHA-256と同系統でダイジェストが長く、64ビット環境では高速なことが多い方式です。 |
オンラインでハッシュを生成する手順
- 入力したテキストならテキストタブ、ファイルならファイルタブ、パスワードハッシュならbcryptタブを選びます。
- テキストを貼り付けるか、アップロード領域にファイルをドラッグします。ファイルは選んだ時点で計算が始まります。
- ハッシュを生成をクリックしてすべてのダイジェストを一度に計算します。
- 必要なダイジェストを、その横のボタンでコピーします。
- ダウンロードを検証するには、公開されている値を公開されているチェックサムと照合欄に貼り付けます。一致したアルゴリズム名が表示されます。
ファイルのMD5・SHA-256チェックサムを確認する方法
ハッシュツールを開く理由の大半がこれです。ファイルタブに切り替えて、ダウンロードしたインストーラー、アーカイブ、ISOイメージをドロップすると、ディスク上にあるままのバイト列から5種類のダイジェストが計算されます。ダウンロードページに掲載されているチェックサムを検証欄に貼り付けてください。アルゴリズム名が緑色で表示されればファイルは無事に届いており、一致しなければ破損か改ざんです。50MBまでのファイルに対応し、読み込みは端末内で完結します。アップロードは行われません。
ハッシュが実際に使われている場面
- ISOイメージ、インストーラー、リリース用アーカイブが壊れず改ざんもされずにダウンロードできたかの確認。
- 全内容を比較せずに、重複するレコード・画像・アップロードを見つける処理。
- リクエストやレンダリング結果からキャッシュキーやETagを作る処理。
- クライアントとサーバーが同じペイロードをハッシュして突き合わせるAPIリクエストの署名。
- 後からの改変が分かるように、整合性の値をデータベースに保存する運用。
- Gitの内部構造、重複排除バックアップ、コンテンツアドレス型ストレージ。
ハッシュは復号できません
「MD5 復号」という検索は非常に多いのですが、前提が誤っています。ハッシュ化は暗号化ではなく、元に戻す鍵は存在しません。いわゆる復号サイトが行っているのは、よくある入力を大量に事前計算した表からダイジェストを引くことだけです。123456やpasswordなら見つかりますが、少しでも珍しい入力では失敗します。可逆な変換が必要なら、暗号化かBase64エンコーダーを使ってください。
パスワードをMD5やSHA-256で保存してはいけません
汎用のハッシュ関数は高速であるように設計されており、その速さは流出したデータベースを手にした攻撃者にとって好都合です。現代のハードウェアは毎秒数十億回の試行ができます。パスワードには、利用者ごとのソルトを備えた意図的に遅いアルゴリズム、つまりbcrypt・scrypt・Argon2が必要です。チェックサムや指紋の用途にはテキストタブとファイルタブを使い、パスワード保存はフレームワークに任せてください。
bcryptハッシュを生成・照合する
bcryptタブは、パスワードハッシュを手作業で用意したいときのためのものです。管理者アカウントの初期データを入れる、テスト用のフィクスチャを書く、ログインが失敗する原因を調べる、といった場面です。パスワードを入力し、コストを4から14の間で、プレフィックスも選んで、ハッシュを生成をクリックします。コストを1上げるごとに計算量は2倍になり、10はPHPの既定値、12は新しいシステムでよく選ばれる値です。$2y$はPHPのpassword_hash()が書き出す形式、$2b$はそれ以外の環境で現在標準の形式、$2a$は古い表記です。3つとも同じアルゴリズムなので、対応するライブラリーならどれでも検証できます。毎回新しいランダムなソルトが使われるため、同じパスワードでも2回続けて同じハッシュになることはありません。
保存済みの値とパスワードを照合するには、ハッシュをパスワードを bcrypt ハッシュと照合欄に貼り付けて照合をクリックします。bcryptはパスワードの先頭72バイトしか読まないため、入力がそれより長いとツールが警告します。bcryptハッシュ生成のページを使えば、このタブが直接開きます。
結果が食い違うときに確認したいこと
- 末尾の改行や空白があるだけでダイジェストは完全に変わります。比較前に入力を整えてください。
- 16進表記では大文字小文字は区別されません。
A3Fとa3fは同じ値です。 - テキストはUTF-8のバイト列としてハッシュ化されるため、別の文字コードでは同じ文字でも値が変わります。
- プロジェクトが公開するチェックサムはファイルのバイト列に対するものであり、テキスト欄の値ではありません。ファイルタブを使えば、そのバイト列がそのままハッシュ化されます。
- 異なる入力から同じ値が出たなら衝突を見つけたことになります。MD5とSHA-1が引退した理由がまさにこれです。
アップロードは一切ありません
5つのダイジェストはすべてクライアント側のJavaScriptで計算されます。入力したテキストも選んだファイルもサーバーに届くことはないため、社内文書、設定値、顧客データの指紋を作業中に安心して取得できます。
Windows・Linux・macOSでファイルのMD5・SHA-256ハッシュを取得する
| 環境 | SHA-256 | MD5 |
|---|---|---|
| Windows(コマンドプロンプト) | certutil -hashfile file.iso SHA256 | certutil -hashfile file.iso MD5 |
| Windows(PowerShell) | Get-FileHash file.iso -Algorithm SHA256 | Get-FileHash file.iso -Algorithm MD5 |
| Linux | sha256sum file.iso | md5sum file.iso |
| macOS | shasum -a 256 file.iso | md5 file.iso |
| Python | hashlib.sha256(data).hexdigest() | hashlib.md5(data).hexdigest() |
| Node.js | crypto.createHash('sha256').update(data).digest('hex') | 'md5' にすれば同様 |
| PHP | hash('sha256', $s) または hash_file('sha256', $path) | md5($s)、md5_file($path) |
結果はどこで計算しても同じです。ハッシュはバイト列だけで決まり、計算したツールには依存しません。だからこそ、配布元がまったく別のマシンで生成した値と、ここでダウンロードファイルを照合できるのです。
関連ツール
指紋の計算は単独で完結しないことが多い作業です。バイナリの符号化はBase64エンコーダー、署名付きトークンの確認はJWTデコーダー、一意な識別子の作成はUUID生成ツール、強固なシークレットの作成はパスワード生成ツールをご利用ください。