ハッシュ生成

テキストやファイルから MD5 / SHA-1 / SHA-256 / SHA-384 / SHA-512 のハッシュ値(16進)を、ブラウザ内で計算します。

入力

ファイルを選ぶと、その内容のハッシュ値を計算します(選択中はテキストより優先。「解除」でテキストに戻ります)。

ハッシュ値(16進・小文字)

MD5 (参考・暗号用途は非推奨)
—
SHA-1
—
SHA-256
—
SHA-384
—
SHA-512
—

※ 計算はすべてブラウザ内(標準の Web Crypto API)で行い、入力はサーバーに送信しません。テキストは UTF-8 としてバイト列化します。MD5 はブラウザ標準 API に含まれないため対象外です。

解説

ハッシュ関数は、入力データから固定長の要約値(ハッシュ値・ダイジェスト)を計算する仕組みです。同じ入力からは必ず同じ値が得られ、入力がたった1文字変わるだけで値が大きく変わります。一方、ハッシュ値から元のデータを復元することはできない一方向の変換です。ファイルやパスワードの「指紋」のように使えます。

このツールは入力をUTF-8のバイト列に変換し、SHA-1・SHA-256・SHA-384・SHA-512の4種類を16進数(小文字)で同時に表示します。名前の数字は出力されるハッシュ値のビット長で、SHA-256は256ビット=16進64桁、SHA-512は512ビット=16進128桁になります(SHA-1は160ビット=40桁)。

具体例として、文字列「abc」をSHA-256にかけると ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad という64桁の値になります。同じ「abc」をSHA-1にかけると a9993e364706816aba3e25717850c26c9cd0d89d(40桁)です。入力を「abc」から「abd」のように1文字変えるだけで、結果はまったく別の値に変わります。

計算にはブラウザ標準のWeb Crypto API(crypto.subtle.digest)を使用し、外部ライブラリは読み込みません。処理はすべてお使いのブラウザ内で完結し、入力内容がサーバーへ送信されることはありません。ダウンロードしたファイルの内容が公開された値と一致するか確かめる改ざんチェック(チェックサム)や、2つの値が同一かの確認などに利用できます。

Web CryptoはHTTPSなどのセキュアな環境でのみ利用できるため、非対応の環境ではその旨のエラー案内を表示します。なお本ツールはMD5には対応していません。MD5やSHA-1は同じハッシュ値になる別データ(衝突)が見つかっており、電子署名や改ざん検知などのセキュリティ用途にはSHA-256以上の利用が推奨されます。

よくある質問

SHA-256とは何ですか?

入力データから256ビット(16進で64桁)の固定長ハッシュ値を計算するハッシュ関数です。同じ入力からは必ず同じ値が得られ、1文字違うだけで結果が大きく変わります。たとえば「abc」のSHA-256は ba7816bf8f01cfea… で始まる64桁になります。

ハッシュ値の桁数はどう決まりますか?

名前の数字がビット長で、それを16進にした桁数になります。SHA-1は160ビット=40桁、SHA-256は256ビット=64桁、SHA-384は96桁、SHA-512は512ビット=128桁です。入力の長さに関わらず桁数は一定です。

ハッシュ値から元のテキストに戻せますか?

戻せません。ハッシュは一方向の変換で、値から元データを復元することはできません。

MD5にも対応していますか?

対応しています。参考用としてMD5も計算・表示します。ただしMD5は衝突(異なるデータが同じ値になる例)が見つかっており、改ざん検知や署名などの安全性が必要な用途には使わないでください。その場合はSHA-256以上をお使いください。

どのハッシュを使えばよいですか?

セキュリティ用途(電子署名・改ざん検知など)にはSHA-256以上を推奨します。MD5やSHA-1は衝突が見つかっており、安全性が必要な場面には向きません。

入力したテキストはサーバーに送られますか?

送られません。計算はすべてブラウザ内のWeb Crypto APIで行われ、入力はどこにも送信されません。

ハッシュ値が「計算できません」と出るのはなぜですか?

Web CryptoはHTTPSなどのセキュアな環境でのみ利用できます。非対応のブラウザや非セキュアな環境ではエラー案内が表示されます。HTTPSでアクセスしているかご確認ください。