ソフトを配布しているサイトに、SHA-256: a1b2c3... という長い文字列が載っていることがあります。あれは「ダウンロードしたファイルが、途中ですり替えられていないか」を確かめるための値です。使い方を知らないと、せっかくの安全策が無駄になります。
このツールは、文字列やファイルからSHA-256・SHA-384・SHA-512・SHA-1のハッシュ値を計算します。配布元の値を貼り付ければ、大文字小文字と空白を無視して自動で照合します。
計算はすべてブラウザの中で行われ、ファイルも文字列もサーバーへ送信されません。200MBまでのファイルを扱えます。
ハッシュ値生成(SHA-256 ほか)
テキストとファイルに対応。ブラウザ内で計算し、データは送信されません。
RESULT
- SHA-256(推奨)
- –
- SHA-384
- –
- SHA-512
- –
- SHA-1(非推奨・照合用途のみ)
- –
FILE / ファイルのハッシュを計算
配布元が公開しているチェックサムと照合できます。ファイルは送信されません。
COMPARE / 2つの値を照合
大文字・小文字と前後の空白は無視して比較します。
ハッシュは「指紋」であって、暗号ではない
ハッシュ関数は、どんな長さのデータからも決まった長さの値を作ります。同じ入力からは必ず同じ値が出て、1ビットでも違えばまったく別の値になります。
| ハッシュ | 暗号化 | Base64 | |
|---|---|---|---|
| 目的 | 同一性の検証 | 秘密を守る | 文字で表現する |
| 元に戻せるか | 戻せない | 鍵があれば戻せる | 誰でも戻せる |
| 出力の長さ | 常に一定 | 入力に比例 | 約1.33倍 |
| 主な用途 | 改ざん検知、パスワード保存 | 通信・保存の秘匿 | データの受け渡し |
「戻せない」ことが重要な性質です。だからこそパスワードの保存に使われます。サービス側はパスワードそのものではなくハッシュ値を保存し、ログイン時に同じ計算をして一致するかを見ます。仮に保存内容が流出しても、そこからパスワードを逆算することはできません。Base64との違いもあわせて確認しておくと、使い分けを間違えません。
ダウンロードしたファイルを、実際に照合する手順
手順は3つだけです。この確認をするかしないかで、改ざんされたインストーラを実行してしまうリスクが変わります。
| 順番 | やること | 注意点 |
|---|---|---|
| 1 | 配布元公式サイトでハッシュ値を確認する | ダウンロードした場所と同じページに載っている値では意味が薄い。両方が差し替えられていたら検知できない |
| 2 | このツールの「FILE」欄でファイルを選ぶ | ファイルは送信されません |
| 3 | COMPARE欄に公式の値を貼り、一致を確認する | 1文字でも違えば別物 |
1番目が肝心です。攻撃者がダウンロードサーバーを乗っ取れる立場なら、同じページに書かれたハッシュ値も書き換えられます。ハッシュ照合が意味を持つのは、ファイルの入手経路とハッシュ値の入手経路が違う場合です。公式サイトのハッシュと、ミラーサイトから落としたファイルを照合する、という使い方が本来の形になります。
コマンドラインでも計算できます。手元の環境に合わせて使ってください。
| 環境 | コマンド |
|---|---|
| Windows (PowerShell) | Get-FileHash ファイル名 -Algorithm SHA256 |
| Mac | shasum -a 256 ファイル名 |
| Linux | sha256sum ファイル名 |
どの方式を使うべきか
| 方式 | 出力の長さ | 評価 | 使いどころ |
|---|---|---|---|
| SHA-256 | 64文字(256ビット) | 現在の標準 | 迷ったらこれ。ファイル検証、署名 |
| SHA-384 / SHA-512 | 96 / 128文字 | 安全 | より長い値が求められる場合。64ビット環境では512のほうが速いこともある |
| SHA-1 | 40文字 | 非推奨 | 衝突を作る手法が実証済み。古いシステムとの照合にのみ |
| MD5 | 32文字 | 使わない | 安全性の用途では不可。ブラウザの標準機能でも提供されていない |
SHA-1とMD5が非推奨なのは、「異なる2つのファイルから同じハッシュ値を作る」ことが現実的な計算量で可能だと示されたためです。改ざんの検知という目的が成立しなくなります。新しく作るものには必ずSHA-256以上を使ってください。
なお、このツールにMD5がないのは、ブラウザの標準暗号機能(Web Crypto API)が意図的に提供していないためです。外部ライブラリを読み込めば実装できますが、推奨されない方式をわざわざ提供する必要はないと判断しました。
パスワードの保存に、素のSHA-256を使ってはいけない
「パスワードはハッシュ化して保存する」は正しいのですが、SHA-256をそのまま1回かけるだけでは不十分です。高速に計算できることが、この用途では弱点になります。
| 方式 | パスワード保存に | 理由 |
|---|---|---|
| SHA-256を1回 | 不適 | 速すぎる。総当たりを1秒間に数十億回試せる |
| SHA-256 + ソルト | まだ不十分 | 事前計算表は防げるが、総当たりの速度は変わらない |
| bcrypt / scrypt / Argon2 | 適切 | 意図的に遅く、必要な計算資源を調整できる |
| PBKDF2 | 可 | 反復回数を十分に設定すれば実用的 |
つまり、パスワード保存では「速いこと」が欠点になるという、他の用途とは逆の性質が求められます。ファイルの検証にはSHA-256、パスワード保存にはbcryptなど。目的で使い分けてください。利用者側の対策はパスワード管理の記事にまとめています。
ハッシュが使われている、身近な場所
| 場所 | 何のために |
|---|---|
| ソフトの配布 | ダウンロード中に壊れていないか、すり替えられていないかの確認 |
| GitのコミットID | 変更内容から一意の識別子を作る |
| SSL/TLS証明書 | 証明書が改ざんされていないことの保証 |
| パスワードの保存 | 元に戻せない形で保管する |
| 重複ファイルの検出 | 中身が同じかを高速に判定する |
| ブロックチェーン | 直前のブロックとつなぎ、改ざんを検知する |
| キャッシュの識別 | 内容が変わったファイルだけ再取得させる |
共通しているのは、「中身を見ずに、同じかどうかだけを高速に判定したい」という要求です。この視点で見ると、なぜこれほど広く使われているかが分かります。用語の意味はIT用語辞典でも確認できます。
同じファイルかどうかを、名前ではなく中身で判定する
ファイル名が違っても中身が同じ、あるいは名前は同じでも中身が違う。こうした状況をハッシュ値で機械的に判定できます。
| 使う場面 | やり方 |
|---|---|
| バックアップが正しくコピーされたか | 元とコピー先の両方でSHA-256を計算し、一致を確認する |
| 重複した写真・書類を探す | ハッシュ値が同じものは、中身がまったく同じ |
| ダウンロードが途中で切れていないか | 配布元の値と照合する |
| 編集したかどうか分からないファイル | 以前の値を控えておけば、変更の有無が分かる |
| ドライブ移行後の検証 | 移行前後で主要ファイルのハッシュを比較する |
ポイントは、1ビットでも違えば、まったく別の値になることです。「だいたい同じ」という結果は存在しません。一致か不一致かのどちらかです。ファイルの検証を含むバックアップ運用はWindowsのバックアップ完全ガイドにまとめています。
ソルトとペッパー|同じパスワードを違う値にする仕組み
ハッシュは同じ入力から必ず同じ値を出します。この性質は検証に便利ですが、パスワード保存では弱点になります。2人が同じパスワードを使っていると、保存されている値も同じになるからです。
| 仕組み | 内容 | 防げるもの |
|---|---|---|
| ソルト | 利用者ごとに違うランダム文字列を、パスワードに足してからハッシュ化する | 事前計算表による一括解読。同じパスワードの利用者を見つけること |
| ペッパー | サービス全体で共通の秘密文字列を、データベースとは別の場所に保管して使う | データベースだけが流出した場合の解読 |
| ストレッチング | ハッシュ化を数万回繰り返し、意図的に時間をかける | 総当たりの速度 |
この3つを自前で組み合わせる必要はありません。bcrypt、scrypt、Argon2 といった専用の仕組みが、すべて内蔵しています。パスワード保存で「自分で実装しない」のが最も安全な選択です。利用者側でできることはパスワード管理の記事にまとめています。
ハッシュで「できないこと」
できることと同じくらい、できないことを知っておくと使い方を誤りません。
| できないこと | 理由 | 代わりに使うもの |
|---|---|---|
| 元のデータに戻す | 一方向の計算。情報が失われている | 暗号化(AESなど) |
| 中身を秘密にする | そもそも隠す仕組みではない | 暗号化 |
| どこが違うかを知る | 一致か不一致かしか分からない | 差分ツール |
| 似ているかを判定する | 1ビット違えば全く別の値になる | 類似度判定の専用アルゴリズム |
| 作成者を証明する | 誰でも同じ値を計算できる | 電子署名 |
最後の項目が重要です。ハッシュ値だけでは「誰が作ったか」は証明できません。ファイルと一緒にハッシュ値も差し替えられれば、検証は通ってしまいます。だからこそ、配布元とハッシュ値の入手経路を分けることに意味があります。
照合が一致しなかったときに、疑う順番
| 順番 | 確認 | よくある原因 |
|---|---|---|
| 1 | 方式が合っているか | 配布元がSHA-1やSHA-512を掲載しているのに、SHA-256と比べている |
| 2 | コピー範囲が正しいか | 前後の空白や改行が混ざっている(当ツールは自動で無視します) |
| 3 | ダウンロードが完了しているか | 途中で切れている。ファイルサイズを配布元と比べる |
| 4 | バージョンが同じか | 配布元が更新され、掲載値が新版のものになっている |
| 5 | 入手先が正規か | ここまで確認して一致しないなら、そのファイルは使わない |
5番まで来た場合、原因の追究より公式サイトから入手し直すほうが早く、確実です。不一致のファイルを「たぶん大丈夫だろう」で実行しないでください。
あわせて使える無料ツール
- UUID・ランダム文字列生成ツール — UUID v4とランダム文字列の生成
- パスワード生成ツール — 条件を指定してパスワードを生成