開発ツール

ハッシュ生成ツール【無料・登録不要】SHA-256・MD5をテキスト・ファイルから計算|ハッシュ値の照合も

ハッシュ生成ツール【無料・登録不要】SHA-256・MD5をテキスト・ファイルから計算|ハッシュ値の照合も
engblog-poster

テキストやファイルのハッシュ値(MD5・SHA-1・SHA-256・SHA-384・SHA-512)を計算できる無料ツールです。会員登録は不要です。ソフトの配布サイトなどに書かれているハッシュ値を貼り付けると、一致するかどうかを判定するので、ダウンロードしたファイルが壊れていないか・改ざんされていないかをかんたんに確認できます。

入力したテキストやファイルはお使いのブラウザの中だけで処理され、サーバーには一切送信されません。

文字コードは UTF-8(BOM なし)で計算します。末尾の改行や空白も 1 文字として計算に含まれます。

アルゴリズムと表示
MD5 安全性が低い
SHA-1 安全性が低い
SHA-256
SHA-384
SHA-512

MD5 と SHA-1 は、同じハッシュ値になる別のデータを意図的に作る方法が見つかっており、安全性が低い方式です。改ざんの確認には SHA-256 以上を使ってください。

入力したテキストやファイルはお使いのブラウザ内だけで処理されます。サーバーへの送信や保存は一切行いません。

使い方

テキストのハッシュ値を計算する

  1. 「テキスト」タブの入力欄に文字を入力します。入力と同時に、下の欄にハッシュ値が表示されます。
  2. 使うアルゴリズム(計算方式)は「アルゴリズムと表示」のチェックで選べます。
  3. 各ハッシュ値の右の「コピー」を押すと、クリップボードにコピーできます。

たとえば「abc」を入力すると、SHA-256 は「ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad」になります。これは、SHA-256 の公式のテスト用の値(RFC 6234 に載っている例)と同じです。

テキストは UTF-8 の文字コードで計算します。改行コードは「LF」と「CRLF」から選べます。同じ見た目の文章でも、改行コードが違うとハッシュ値はまったく別の値になります(よくある質問で説明します)。

ファイルのハッシュ値を計算する

  1. 「ファイル」タブを開きます。
  2. 点線の枠にファイルをドラッグ&ドロップするか、「ファイルを選択」からファイル(200MB まで)を選びます。
  3. 計算が終わると、ハッシュ値が表示されます。大きなファイルでは進み具合のバーが表示され、「中止」で計算を止められます。

ファイルの中身をそのまま計算するので、Windows の Get-FileHash や certutil、Linux の sha256sum と同じ値になります。

公開されているハッシュ値と照合する

  1. テキストを入力するか、ファイルを選んでハッシュ値を計算します。
  2. 配布サイトなどに書かれているハッシュ値を、「照合:公開されているハッシュ値を貼り付け」の欄に貼り付けます。
  3. 一致すれば「一致しました(SHA-256)」のように表示され、一致したハッシュ値の枠が緑色になります。一致しない場合は赤色で「一致しません」と表示されます。

ハッシュ値の文字数から、どのアルゴリズムの値かを自動で判断します(MD5 は 32 文字、SHA-1 は 40 文字、SHA-256 は 64 文字、SHA-384 は 96 文字、SHA-512 は 128 文字)。次のような書き方のゆれは、そのまま貼り付けても照合できます。

  • 大文字・小文字の違い、前後の空白や改行
  • 「sha256:」「SHA256=」のような接頭辞
  • sha256sum の形式(「ハッシュ値」+空白+「ファイル名」)。複数行の一覧(SHA256SUMS など)は、どれか 1 行と一致すれば一致と判定し、ファイル名も表示します
  • 「SHA256 (ファイル名) = ハッシュ値」の形式
  • PowerShell の Get-FileHash や、certutil の出力をまるごと貼り付けたもの

オプションの説明

オプション内容
改行コードテキストの改行を LF(Linux・Mac・Git Bash などで使う形)と CRLF(Windows で使う形)のどちらとして計算するかを選ぶ
アルゴリズムMD5・SHA-1・SHA-256・SHA-384・SHA-512 から、計算するものを選ぶ(複数可)
大文字で表示ハッシュ値を英大文字で表示する。値の意味は同じで、PowerShell の Get-FileHash の表示に合わせたいときに使う

ハッシュとは?

ハッシュ(ハッシュ値)は、データから計算される決まった長さの値で、データの「指紋」のようなものです。ハッシュ値を計算する方式を「ハッシュ関数」と呼び、SHA-256 や MD5 がその代表です。

ハッシュには次のような性質があります。

  • 同じデータからは、いつ・どこで計算しても同じ値になる:だから、配布元と自分の手元で計算した値を比べられます
  • データが 1 ビットでも違えば、まったく別の値になる:たとえば SHA-256 で「abc」は「ba7816bf…」、「abd」は「a52d159f…」で始まる、似ても似つかない値になります
  • 元のデータの大きさに関係なく長さが決まっている:SHA-256 なら、1 文字でも数 GB のファイルでも、16 進数 64 文字(256 ビット)です
  • ハッシュ値から元のデータには戻せない:計算は一方通行です

安全なハッシュ関数では、「同じハッシュ値になる別のデータ」(衝突)を意図的に作ることが事実上できません。ところが MD5 と SHA-1 は、この性質が破られています。

アルゴリズム長さ(16 進数)安全性
MD532 文字(128 ビット)低い。2004 年に衝突の例が発表され、RFC 6151 で「電子署名など衝突への強さが必要な用途には使えない」とされている
SHA-140 文字(160 ビット)低い。2017 年に Google などが実際の衝突(中身の違う 2 つの PDF)を公開。NIST(アメリカ国立標準技術研究所)は 2030 年末までに使用をやめるよう求めている
SHA-25664 文字(256 ビット)現在も安全とされ、もっともよく使われている
SHA-38496 文字(384 ビット)現在も安全とされている
SHA-512128 文字(512 ビット)現在も安全とされている

MD5 や SHA-1 の値しか公開されていない場合、偶然の破損(ダウンロードの失敗など)を見つけるのには使えますが、悪意のある改ざんを見破る目的には不十分です。新しく値を公開・記録するときは SHA-256 以上を使いましょう。

このツールの SHA-1・SHA-256・SHA-384・SHA-512 は、ブラウザに標準で備わっている暗号機能(Web Crypto API)で計算しています。MD5 はこの機能にないため、仕様書(RFC 1321)に沿ってツール内で計算し、仕様書に載っているテスト用の値と一致することを確かめています。

エンコード・暗号化・ハッシュの違い

どれも「データを別の形に変える」ものですが、目的と「元に戻せるかどうか」が違います。

種類元に戻せるか目的例
エンコード誰でも戻せる(鍵は不要)データを、扱える形式に変えるBase64、URL エンコード、UTF-8
暗号化鍵を持つ人だけが戻せるデータの中身を秘密にするAES、RSA、HTTPS の通信
ハッシュ誰も戻せないデータが同じかどうかを確かめるSHA-256、MD5

よくある誤解が「Base64 にすれば暗号化になる」「ハッシュは暗号化の一種」というものです。Base64 は誰でも元に戻せるので、秘密を守る役には立ちません。ハッシュは元に戻せないので、データを受け渡す用途には使えません。Base64 については「Base64とは?仕組み・暗号化との違い・よくある使い方をわかりやすく解説」で詳しく解説しています。

パスワードの保存に SHA-256 などをそのまま使ってはいけない

「元に戻せないなら、パスワードを SHA-256 にして保存すれば安全」と考えがちですが、これは誤りです。SHA-256 や MD5 は計算がとても速いように作られているため、データベースが盗まれると、攻撃者は大量のパスワード候補を高速に試して元のパスワードを突き止められます。

パスワードの保存には、わざと計算を遅くした専用の方式(Argon2id、scrypt、bcrypt、PBKDF2 など)を使います。セキュリティの指針として広く参照されている OWASP の資料でも、Argon2id を第一の候補とし、「SHA-256 のような速いハッシュはパスワードの保存に向かない」としています。多くのプログラミング言語やフレームワークには、これらを使うための関数が用意されているので、自分でハッシュを組み合わせず、それを使いましょう。

ダウンロードしたファイルの改ざんを確認する方法

ソフトウェアの配布サイトには、ダウンロード用のファイルと一緒に「SHA-256」「Checksum」「ハッシュ値」などとして値が書かれていることがあります。ダウンロードしたファイルのハッシュ値を自分で計算し、この値と一致すれば、ファイルが途中で壊れたり、すり替えられたりしていないと確認できます。

このツールの「ファイル」タブでも確認できますが、200MB を超えるファイル(OS のインストール用イメージなど)は、パソコンに最初から入っているコマンドで確認してください。以下のコマンドは、Windows 11 の PowerShell 5.1・コマンドプロンプト・Git Bash で実際に実行して、出力を確かめています。

Windows(PowerShell):Get-FileHash

  1. 画面下のスタートボタンを押し、「powershell」と入力します。
  2. 検索結果の「Windows PowerShell」を選んで開きます。
  3. 次のコマンドの「example.zip」を実際のファイル名に変えて実行します(「ダウンロード」フォルダーにあるファイルの場合)。
Get-FileHash -Algorithm SHA256 "$HOME\Downloads\example.zip"

次のように表示され、「Hash」の列がハッシュ値です。Get-FileHash は英大文字で表示しますが、大文字と小文字の違いは値の違いではありません(配布サイトが小文字で書いていても、同じ値なら一致です)。「-Algorithm」を省略したときも SHA256 で計算します。MD5 が必要なときは「-Algorithm MD5」にします。

Algorithm Hash                                                             Path
--------- ----                                                             ----
SHA256    BA7816BF8F01CFEA414140DE5DAE2223B00361A396177A9CB410FF61F20015AD C:\Users\…\Downloads\example.zip

目で 64 文字を見比べるのは大変なので、次のように比べると「True」(一致)か「False」(不一致)だけが表示されます。「公開されているハッシュ値」の部分を、配布サイトの値に置き換えてください。PowerShell の「-eq」は大文字と小文字を区別しないので、小文字の値をそのまま貼り付けて構いません。

(Get-FileHash -Algorithm SHA256 "$HOME\Downloads\example.zip").Hash -eq "公開されているハッシュ値"

Windows(コマンドプロンプト):certutil

コマンドプロンプトでは certutil を使います。スタートボタンを押して「cmd」と入力し、「コマンド プロンプト」を開いてから、次のコマンドを実行します。

certutil -hashfile "%USERPROFILE%\Downloads\example.zip" SHA256

次のように 3 行で表示され、2 行目がハッシュ値です(こちらは英小文字で表示されます)。最後の「SHA256」を省略すると SHA1 で計算されるので、必ず指定しましょう。使えるアルゴリズムは MD2・MD4・MD5・SHA1・SHA256・SHA384・SHA512 です。

SHA256 ハッシュ (対象 C:\Users\…\Downloads\example.zip):
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
CertUtil: -hashfile コマンドは正常に完了しました。

Git Bash・Linux:sha256sum

sha256sum ~/Downloads/example.zip

「ハッシュ値」「空白」「ファイル名」の順に 1 行で表示されます。Windows の Git Bash では、次のようにファイル名の前に「*」が付きました(バイナリとして読み込んだという印で、ハッシュ値には影響しません)。MD5 なら md5sum、SHA-512 なら sha512sum を使います。

ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad */c/Users/…/Downloads/example.zip

「-c」を付けると、公開されている値との照合まで自動で行えます。まず cd でファイルのあるフォルダーに移動し、次のコマンドの「公開されているハッシュ値」の部分を置き換えて実行します。ハッシュ値とファイル名の間は空白 2 つにします。一致すれば「example.zip: OK」、一致しなければ「example.zip: FAILED」と表示されます。配布サイトに「SHA256SUMS」のような一覧ファイルがある場合は、「sha256sum -c SHA256SUMS」のように一覧ファイルを指定して確認することもできます。

cd ~/Downloads
echo "公開されているハッシュ値  example.zip" | sha256sum -c

確認するときの注意点

  • ハッシュ値は公式サイトの https のページで確認する:ミラーサイトや転載ページに書かれた値は、ファイルと一緒にすり替えられている可能性があります。
  • ハッシュ値の一致は「公開されている値と同じファイル」という意味:配布サイトそのものが乗っ取られ、ファイルとハッシュ値の両方が書き換えられた場合は見破れません。電子署名(GPG の署名や Windows のデジタル署名)が用意されていれば、あわせて確認するとより確実です。
  • 一致しないときは、そのファイルを開かずに削除する:ダウンロードし直しても一致しない場合は、配布元に問い合わせましょう。別のバージョンやほかの OS 向けのファイルの値と見比べていないかも確認してください。

よくある質問

入力したデータは保存されませんか?

保存されません。ハッシュ値の計算はすべてお使いのブラウザの中で行われ、テキストやファイルをサーバーに送信することも、保存することもありません。ページを閉じると入力内容は消えます。

同じ文字なのに、コマンドの結果と値が違うのはなぜ?

多くの場合、末尾の改行や改行コードの違いが原因です。ハッシュは 1 バイトでも違うと別の値になります。たとえば SHA-256 で、「abc」は「ba7816bf…」、末尾に LF の改行が付いた「abc」は「edeaaff3…」、CRLF の改行が付いた「abc」は「552bab68…」で始まる値になります。

Git Bash や Linux の echo は、末尾に改行を付けて出力します。改行なしの文字列のハッシュ値を計算するときは、次のように「-n」を付けます。この結果は、このツールに「abc」と入力したときの SHA-256 と同じになります。

echo -n 'abc' | sha256sum

また、文字コードによっても値が変わります。このツールは UTF-8 で計算するため、Shift_JIS で保存したファイルとは値が一致しません。日本語を含む文章のハッシュ値を比べるときは、「ファイル」タブでファイルそのものを読み込むのが確実です。

大文字と小文字、どちらが正しいですか?

どちらも同じ値です。ハッシュ値は 16 進数(0〜9 と a〜f)で表され、a〜f を大文字で書くか小文字で書くかは表示の違いにすぎません。PowerShell の Get-FileHash は大文字、certutil や sha256sum は小文字で表示します。このツールの照合機能も、大文字・小文字を区別せずに比べます。

ファイルの上限が 200MB なのはなぜですか?

ブラウザの暗号機能(Web Crypto API)で SHA を計算するには、ファイル全体を一度にメモリに読み込む必要があるためです(少しずつ渡して計算する仕組みがありません)。大きすぎるファイルを読み込むと、ブラウザが固まったり、スマートフォンでメモリが足りなくなったりするおそれがあるため、上限を 200MB にしています。それより大きいファイルは、上で紹介した Get-FileHash・certutil・sha256sum で確認してください。

MD5 や SHA-1 は使わないほうがいいですか?

改ざんの防止や電子署名など、安全性が必要な用途には使わないでください。同じハッシュ値になる別のデータを意図的に作る方法が見つかっているためです。一方、配布元が MD5 しか公開していない場合に、ダウンロード中の偶然の破損がないかを確かめる程度なら役に立ちます。このツールでは、MD5 と SHA-1 に「安全性が低い」の印を付けています。

ハッシュ値から元のデータを調べられますか?

計算で元に戻すことはできません。ただし、「password」のような短く単純な文字列は、候補を片っ端から計算して比べることで突き止められてしまいます。パスワードの保存に SHA-256 や MD5 をそのまま使ってはいけないのはこのためです(「エンコード・暗号化・ハッシュの違い」を参照)。

関連する記事・ツール

ABOUT ME
hr
hr
エンジニアとして働いている hr です。仕事や資格勉強で「こんなツールがあれば」と感じたものを、無料Webツールと解説記事にして発信しています。
記事URLをコピーしました