ハッシュ値計算ツール(MD5・SHA-256・SHA-3など)

文字列やファイルのハッシュ値をMD5・SHA-1・SHA-256・SHA-512・SHA-3・BLAKE2・CRC32など31種類の方式で計算できる無料ツール。HMAC(鍵付きハッシュ)、文字コード・改行コードの指定、ハッシュ値の照合にも対応。入力内容やファイルはサーバーに送信されず、ブラウザ内だけで計算します。
0文字・0バイト(UTF-8)
詳細設定(入力形式・BOM・出力の長さ)
出力の長さ(ビット、8の倍数)

計算結果

ツールの紹介

文字列やファイルのハッシュ値を、MD5・SHA-1・SHA-2・SHA-3・Keccak・BLAKE2・BLAKE3・RIPEMD-160・CRC-32 など31種類の方式で計算できるツールです。HMAC(鍵付きハッシュ)の計算や、手元のハッシュ値との照合もできます。

文字列では文字コード(UTF-8・UTF-16・Shift_JIS・EUC-JP)と改行コードを選べるので、ほかのプログラムで計算したハッシュ値と同じ条件で確かめられます。ファイルでは、ダウンロードしたファイルが壊れたり改ざんされたりしていないかを、配布元が公開しているハッシュ値と照合して確かめられます。

計算はすべてお使いのブラウザの中で行います。入力した文字列・鍵・ファイルはサーバーに送信されません。

使い方

  1. 「ハッシュ化する文字列」に文字列を入力します。入力するとすぐに計算結果が表示されます。
  2. 必要に応じて文字コードと改行コードを選びます。通常は UTF-8・LF のままで問題ありません。
  3. 計算結果の「コピー」でハッシュ値をコピーします。グループ名を押すと、ほかの方式の結果を開いたり閉じたりできます。
  4. 手元のハッシュ値と比べるときは、「照合するハッシュ値」に貼り付けます。一致した方式が緑色で表示されます。
  5. HMACを計算するときは「HMAC(鍵付き)」にチェックを入れ、鍵を入力します。

「詳細設定」では、16進数やBase64で入力したバイト列をそのままハッシュ化したり、BOMを付けたり、SHAKE128・SHAKE256・BLAKE3 の出力の長さを変えたりできます。

ファイルのハッシュ値を調べるには

  1. 「ファイル」に切り替え、ファイルを選ぶか、ページにドロップします。すぐに計算が始まります。
  2. 計算する方式は、最初は SHA-256 だけです。ほかの方式が必要なときは「計算する方式」から選びます。選ぶ方式が多いほど時間がかかります。
  3. 配布元が公開しているハッシュ値を「照合するハッシュ値」に貼り付けると、一致するかどうかを確かめられます。sha256sum の出力のように、ハッシュ値の後ろにファイル名が付いたままでも照合できます。

ファイルは少しずつ読み込みながら計算するので、サイズに上限はありません。大きなファイルでは、進み具合と残り時間の目安が表示され、途中で中止することもできます。

ハッシュ値が一致しないときは

ハッシュ値は、元のデータが1バイトでも違うとまったく別の値になります。次の点を確認してください。

  • 文字コード:同じ「あ」でも UTF-8 と Shift_JIS ではバイト列が違うため、ハッシュ値も変わります。
  • 改行コード:入力欄の改行は LF として扱います。Windows で作ったテキスト(CRLF)と比べるときは CRLF を選んでください。
  • 末尾の改行:echo "abc" | sha256sum のように echo を使うと、末尾に改行が付いた状態で計算されます。改行を付けずに計算するには printf '%s' "abc" | sha256sum を使います。
  • 空白とBOM:前後の空白や、ファイルの先頭にあるBOMの有無でも値が変わります。
  • Keccak-256 と SHA3-256:名前は似ていますが、計算の一部が違うため別の値になります。Ethereum で使われているのは Keccak-256 です。
  • SHAKE の長さ:SHAKE128・SHAKE256 は出力の長さによって値が変わります。このツールの初期値は 256ビット・512ビットです(OpenSSL 3.0 や Node.js の初期値は 128ビット・256ビット)。照合では、長さが違っても先頭部分が一致すれば一致と判定します。
  • 大文字と小文字:16進数の大文字と小文字は同じ値を表します。照合では区別しません。

Shift_JIS は、Windows で使われている CP932(Windows-31J)として変換します。「〜」(波ダッシュ)と「~」(全角チルダ)のように、環境によって別の文字として入力される記号は、どちらも同じバイトに変換します。Shift_JIS・EUC-JP で表せない文字(絵文字など)が含まれているときは計算しません。

ほかの環境で同じ値を出す例

どれも UTF-8・改行なしの「hello」の SHA-256 を計算し、2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 になります。

# Linux(macOS では sha256sum の代わりに shasum -a 256)
printf '%s' 'hello' | sha256sum

# PHP
hash('sha256', 'hello');

# Python
hashlib.sha256('hello'.encode('utf-8')).hexdigest()

# JavaScript(Node.js)
require('crypto').createHash('sha256').update('hello', 'utf8').digest('hex')

主な方式の違い

方式出力の長さ主な用途安全性の目安
MD5128ビットファイルの破損チェック、古いシステムとの互換別のデータで同じ値になる組み合わせ(衝突)を簡単に作れるため、改ざんの検知や署名には使えません
SHA-1160ビットGit、古い証明書や署名衝突を作る攻撃が実証されています。新しい用途には使わないでください
SHA-2(SHA-224・SHA-256・SHA-384・SHA-512 ほか)224〜512ビット電子署名、SSL/TLS証明書、ダウンロードしたファイルの確認など現在の標準で、安全に使えます
SHA-3(SHA3-224〜SHA3-512)224〜512ビットSHA-2 と仕組みが異なる新しい標準安全に使えます
SHAKE128・SHAKE256指定した長さ必要な長さの値がほしいとき十分な長さで使えば安全です
Keccak-224〜Keccak-512224〜512ビットEthereum(Keccak-256)SHA-3 として標準化される前の版で、SHA-3 とは値が異なります
BLAKE2・BLAKE3256〜512ビット(BLAKE3は長さを指定可)速さが求められる場面(b2sum・b3sum コマンドなど)安全に使えます
RIPEMD-160160ビットBitcoin のアドレス実用的な攻撃は知られていませんが、出力が短めです
CRC-32・CRC-32C・Adler-3232ビット通信やファイルの誤り検出(ZIP・PNG・zlib など)意図的に同じ値を作れるため、改ざんの検知には使えません
FNV-1a・xxHash・MurmurHash332・64ビットハッシュテーブル、データの振り分け、重複チェック改ざんの検知には使えません

xxHash・MurmurHash3 はシード値0で計算します。チェックサム・非暗号学的ハッシュの方式は、10進数の値も表示します(PHP の crc32() などは整数で返すため)。

注意点

  • ハッシュ化は暗号化とは違い、ハッシュ値から元の文字列に戻すことはできません。ただし、短い文字列や推測しやすいパスワードは、総当たりで元の文字列を見つけられることがあります。
  • パスワードを保存する用途には、MD5 や SHA-256 をそのまま使わず、bcrypt・Argon2 などパスワード専用の方式を使ってください。
  • 入力した文字列・鍵・ファイルはサーバーに送信されません。ブラウザに保存するのは、表示形式、グループの開閉状態、文字列とファイルのどちらを使ったか、ファイルで計算する方式の選択だけです。