Hash生成ツール(無料・ブラウザ完結)
秘密鍵はブラウザ内でのみ使用されます。サーバーには送信されません。
大容量ファイル対応(Stream API使用)
生成結果のハッシュ値をコピーして貼り付けると、既知のチェックサムと簡単に比較できます。
ハッシュ生成ツールの使い方
- 「テキスト入力」または「ファイル入力」タブを選択
- テキストを入力(自動生成)またはファイルをドラッグ&ドロップ
- HEX / Base64 等の出力形式を選択
- コピーボタンで各アルゴリズムの結果をクリップボードに保存
ハッシュ値(ハッシュダイジェスト)とは、任意の長さのデータを固定長の文字列に変換した値です。ハッシュ関数(SHA-256等)によって計算されます。
ハッシュ値から元のデータを復元することは計算上不可能(不可逆)。パスワード照合に使われる理由です。
同じ入力から常に同じハッシュ値が生成される。チェックサム・整合性確認に使われる理由です。
入力データを1文字変えるだけでハッシュ値が大幅に変化する。改ざん検知に使われる理由です。
異なる入力が同じハッシュ値(衝突)を生成することが計算上困難。MD5・SHA-1では衝突例が発見済み。
主な用途
- ファイル整合性確認:ダウンロードしたファイルが改ざんされていないか確認(チェックサム)
- パスワード保存:DBにパスワードを平文で保存せず、ハッシュ値のみ保存(SHA-256は推奨されない・bcrypt等を使うこと)
- データ重複検出:ファイルのMD5/SHA-256が同一なら同一内容と判断
- Gitのコミットハッシュ:Git内部でSHA-1(旧)/SHA-256(新)を使ってコミットを識別
- API認証・Webhook署名:HMAC-SHA256を使ってリクエストが正規送信元からのものか検証
- デジタル署名:文書の署名前にハッシュを計算し、署名対象を固定サイズに圧縮
ハッシュアルゴリズムの選択は用途によって異なります。セキュリティ強度・速度・互換性を比較しました。
| アルゴリズム | ビット長 | HEX文字数 | 速度 | セキュリティ | 推奨用途 |
|---|---|---|---|---|---|
| MD5 | 128bit | 32文字 | 最速 | 非推奨(衝突発見済) | 旧システム互換・チェックサムのみ |
| SHA-1 | 160bit | 40文字 | 速い | 非推奨(衝突発見済) | Git(旧)・互換性維持のみ |
| SHA-256 | 256bit | 64文字 | 速い | 推奨(業界標準) | ファイル検証・API署名・Git(新)・証明書 |
| SHA-384 | 384bit | 96文字 | 普通 | 高セキュリティ | 高セキュリティ要件・TLS証明書 |
| SHA-512 | 512bit | 128文字 | 普通 | 最高セキュリティ | 最高セキュリティ要件・長期保存データ |
| HMAC-SHA256 | 256bit | 64文字 | 速い | 推奨(認証用) | Webhook署名・API認証・メッセージ認証 |
MD5は2004年・SHA-1は2017年に衝突(異なるデータで同じハッシュ)が実証されました。ファイル整合性の簡易チェックには使えますが、セキュリティ用途(パスワード・デジタル署名・証明書)には絶対に使わないでください。
SHA-256等の高速ハッシュはパスワード保存に不適切です。GPUでの総当たり攻撃が高速に行えるためです。パスワード保存専用の低速アルゴリズム(bcrypt・Argon2・scrypt)を使用してください。
ファイルのチェックサムとは、ファイル全体から計算したハッシュ値です。ダウンロード後にハッシュ値を照合することで改ざんや破損を検知できます。
ダウンロードサイトや公式ページに記載された「SHA-256チェックサム」等のハッシュ値をコピーしておきます。
当ツールの「ファイル入力」タブを選択し、ダウンロードしたファイルをドラッグ&ドロップして読み込みます。
「検証」タブに切り替え、公式サイトに記載されたハッシュ値を貼り付けて「検証」ボタンをクリックします。
緑色の「一致」表示が出ればファイルは改ざんされていません。赤色の「不一致」が出た場合は再ダウンロードが必要です。
ターミナルでの確認コマンド(参考)
shasum -a 256 ファイル名
md5 ファイル名
Get-FileHash ファイル名 -Algorithm SHA256
Get-FileHash ファイル名 -Algorithm MD5
HMAC(Hash-based Message Authentication Code)は、秘密鍵を使ってメッセージの認証と完全性を同時に保証するアルゴリズムです。
GitHub Webhooksは、ペイロードに対してHMAC-SHA256で署名し、X-Hub-Signature-256ヘッダーで送信します。受信側が同じ計算を行い一致すれば正規のリクエストと確認できます。
// Node.js での検証例
const sig = crypto.createHmac('sha256', secret)
.update(payload)
.digest('hex');
// "sha256=" + sig を X-Hub-Signature-256 と比較
AWS・Stripe等のAPIではリクエストをHMACで署名し、秘密鍵を持つ正規ユーザーのみがリクエストを送れるよう認証します。
JWTのHS256署名はHMAC-SHA256を使用します。秘密鍵でヘッダー+ペイロードに署名し、受信者が同じ鍵で検証します。
- Q MD5ハッシュは安全ですか?
- A MD5は2004年に衝突(異なるデータから同じハッシュ値が生成されること)が実証されました。暗号学的セキュリティ目的(デジタル署名・パスワード保存)には使用しないでください。ファイルの簡易チェックサムや旧システムとの互換性維持には引き続き使用できます。
- Q 入力したテキストやファイルはサーバーに送信されますか?
- A いいえ、送信されません。すべての処理はブラウザ内で完結します。SHA-256以上の計算はWeb Crypto API(ブラウザ組込み)、MD5/SHA-1は純粋なJavaScriptで実行されます。機密データ・パスワード・プライベートなファイルも安心してご利用いただけます。
- Q SHA-256とSHA-2の関係は何ですか?
- A SHA-2はアルゴリズムの「ファミリー名」です。SHA-256・SHA-384・SHA-512はすべてSHA-2ファミリーに属します。数字はハッシュ値のビット長を表します(SHA-256は256ビット = 64文字のHEX)。現在主流のSHA-3はまた別の設計(Keccak)です。
- Q 同じ入力でも毎回異なるハッシュ値が生成されますか?
- A いいえ、ハッシュ関数は決定論的です。同じ入力(テキスト・ファイル)からは常に同じハッシュ値が生成されます。これが整合性確認に使える理由です。例外として、HMAC-SHA256は秘密鍵によって同じメッセージでも異なる値になります。
- Q ハッシュ値からパスワードを復元(リバース)できますか?
- A SHA-256等の暗号学的ハッシュ関数は「一方向関数」で、設計上は不可逆です。ただし、短いパスワードや辞書に載っている単語は「レインボーテーブル」という事前計算済みのデータベースを使って対応するパスワードを検索される可能性があります。ハッシュ化ではなくbcrypt等のパスワードハッシュ専用関数の使用を推奨します。
- Q HMAC-SHA256とSHA-256の違いは?
- A SHA-256はメッセージのみからハッシュを計算します。HMAC-SHA256は「秘密鍵」を組み合わせてハッシュを計算するため、同じメッセージでも鍵が異なれば全く異なる値になります。秘密鍵を知る者だけが正しいHMACを生成・検証できるため、API認証・Webhook署名等の「送信元の認証」に使われます。
- Q 大容量ファイルのハッシュ計算に時間がかかります。対策はありますか?
- A このツールはStream APIを使ってファイルをチャンク(小分け)で処理するため、大容量ファイルでもメモリ使用量を一定に保ちながら計算できます。ただし1GB以上の非常に大きなファイルはハッシュ計算自体に時間がかかります(計算量はファイルサイズに比例)。進捗バーで計算状況を確認しながらお待ちください。