本文へスキップ

ハッシュ生成ツール

テキストやファイルのMD5・SHA-1・SHA-256・SHA-384・SHA-512・SHA3-256・BLAKE3ハッシュをまとめて計算し、配布元が公開しているハッシュ値と一致するかを比較します。

入力方法

計算するアルゴリズム
表示形式

ハッシュ結果

  • MD5
  • SHA-1
  • SHA-256
  • SHA-384
  • SHA-512

ファイルはこの端末の中だけで処理され、サーバーには送信されません。 仕組みを見る

文字列helloを実際のSHA-256ハッシュに変換

ハッシュとは

ハッシュ(hash)は、どんな長さのデータでも決まった長さの値にまとめる計算です。同じ入力からは必ず同じ値が出ますが、入力が少しでも違えば値はまるごと変わります。出てきた値から元のデータを復元することはできません。

テキストの欄に hello と入れると、SHA-256は 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 になります。先頭を大文字に変えただけの Hello では 185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969 となり、先ほどの値とは似ても似つきません。だからこそ、ハッシュ値を2つ見比べるだけで、元のデータが同じかどうかを判断できます。このように照合のために使うハッシュ値を、チェックサムとも呼びます。

使い方

  1. 入力方法で「テキスト」か「ファイル」を選びます。テキストなら「ハッシュ化するテキスト」の欄に入力し、ファイルならドラッグ&ドロップするか選択します。ファイルの形式は問いません。
  2. 計算するアルゴリズムで、必要なものをオンにします。ボタンは押すたびにオンとオフが入れ替わり、いくつでも同時にオンにできます。すべてオフにすると「アルゴリズムを1つ以上選んでください。」と表示されます。
  3. 表示形式を「16進数(小文字)」「16進数(大文字)」「Base64」から選びます。
  4. ハッシュ結果に、オンにしたアルゴリズムの値が1行ずつ並びます。
  5. 照合したい値があるときは、予想されるハッシュ値と比較の欄に貼り付けます。
アルゴリズム ハッシュの長さ 16進数の桁数 最初からオン
MD5 128ビット 32 はい
SHA-1 160ビット 40 はい
SHA-256 256ビット 64 はい
SHA-384 384ビット 96 はい
SHA-512 512ビット 128 はい
SHA3-256 256ビット 64 いいえ
BLAKE3 256ビット 64 いいえ

SHA3-256は長さこそSHA-256と同じですが、SHA-2とは設計の異なるSHA-3系なので、同じ入力でも値は一致しません。BLAKE3は、米国国立標準技術研究所(NIST)の標準には含まれていないアルゴリズムです。表示形式をBase64にすると同じ値が短く書け、MD5は24文字、SHA-256は44文字になります。

ダウンロードしたファイルが配布元のものと同じか確かめる

配布ページには、「SHA-256: 3a7bd3e2…」といった形でハッシュ値が載っていることがあります。入力方法を「ファイル」に切り替えてダウンロードしたファイルを選び、載っていた値を「予想されるハッシュ値と比較」の欄に貼り付けてください。

  • オンにしたアルゴリズムのどれかと同じ値なら、「SHA-256の値と一致します。」のように、どのアルゴリズムで合ったのかを示し、結果一覧のその行を強調します。貼り付けた値がどのアルゴリズムのものか、あらかじめ知っておく必要はありません。
  • 同じ値が見つからなければ「計算した値と一致しません。」と出ます。その場合はファイルをダウンロードし直してください。

照合の際、16進数の大文字と小文字の違い、先頭の 0x、途中に入った空白・コロン(:)・ハイフン(-)は無視します。5D:41:40:2A:... のように2桁ずつ区切られた値も、そのまま貼り付けて構いません。Base64で書かれた値は、いま選んでいる表示形式に関係なく照合しますが、こちらは大文字と小文字まで完全に同じでなければ一致しません。

値が一致したときに言えるのは、手元のファイルが、配布者がハッシュを計算したときのファイルと同じだということです。配布ページに載っているハッシュ値のほうが書き換えられていた場合は、この方法では気づけません。

テキストのハッシュがほかのツールと合わないとき

テキストは、UTF-8のバイト列に直してから計算しています。目に見えない文字が1つあるだけでも値は変わるので、ほかのツールと結果が合わないときは、たいてい改行が原因です。

  • hello のSHA-256は 2cf24dba... ですが、末尾に改行が1つ付いた hello は 5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03 です。ターミナルで echo hello | sha256sum と打って出てくるのは、この後者の値です。echoが末尾に改行を足すためです。
  • 同じ文章でも、メモ帳で保存したファイルのハッシュと、文章を貼り付けて計算したハッシュが食い違うことがあります。ファイルの文字コードがUTF-8ではない場合や、改行の方式が違う場合は、バイト列が別物になるからです。ファイルのハッシュを知りたいときは、中身を貼り付けるのではなく、「ファイル」で選んでください。

大きなファイルの読み込み方

ファイルは一度にメモリへ載せず、16MiBずつ区切って読みながら計算を進めます。オンにしたアルゴリズムは同じ断片をまとめて受け取るので、アルゴリズムの数だけファイルを読み直すことはありません。計算中は「ハッシュを計算しています…」という進捗バーが出て、キャンセルすると「計算をキャンセルしました。」と表示されます。

ハッシュの計算には、WebAssemblyで作られたhash-wasmライブラリを使っています。

参考資料

よくある質問

何も入力していないのにハッシュ値が出ています。不具合でしょうか?

不具合ではありません。テキストの欄が空のあいだは、長さ0の入力に対するハッシュを表示しています。このときMD5はd41d8cd98f00b204e9800998ecf8427e、SHA-256はe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855です。よそでこの値を見かけたら、空のファイルか空文字列をハッシュした結果だと考えてください。

配布ページの値と見た目は同じなのに、「計算した値と一致しません。」と出ます。

確認する点は3つあります。まず、そのアルゴリズムが「計算するアルゴリズム」でオンになっているか。オフのアルゴリズムの値とは比べません。次に、貼り付けたのがハッシュ値だけか。「sha256:」のような接頭辞や、後ろに続くファイル名まで入っていると不一致になります。最後に、値を端から端まで貼り付けたか。先頭の数桁だけでは比べられません。

ファイルの計算中にアルゴリズムをオン・オフするとどうなりますか?

そこまでの計算は破棄され、ファイルを先頭から読み直します。大きなファイルを扱うなら、先にアルゴリズムを決めてからファイルを選ぶほうが早く終わります。「表示形式」は計算済みの値の書き方を変えるだけなので、切り替えても再計算は起こりません。

複数のファイルをまとめて計算できますか?

計算できるのは一度に1ファイルです。複数まとめてドラッグ&ドロップしても、受け取るのは最初の1つだけです。続けて別のファイルを選ぶと、前のファイルの結果は新しい結果に置き換わります。

パスワードをSHA-256でハッシュして保存しても問題ありませんか?

おすすめできません。OWASPは、SHA-256のような高速なハッシュはパスワードの保存に適さないとしています。計算が速いということは、攻撃者も短時間で大量の候補を試せるということだからです。パスワードにはArgon2id、scrypt、bcryptといった、あえて遅く作られた専用の関数を使ってください。このツールのハッシュは、ファイルの確認のような用途に向いています。

MD5やSHA-1でファイルの真正性を確認できますか?

MD5とSHA-1は、いまでもチェックサムとしてよく目にします。ただし、誰かが意図的に細工できる状況では信用できません。別々の2つの入力から同じハッシュ値を作り出す「衝突」の方法が、すでに知られているからです。NISTは、現在のコンピューターなら元と同じSHA-1ハッシュを持つ偽のメッセージを作れるとして、SHA-1を2030年12月31日までに段階的に廃止し、SHA-2かSHA-3へ移行するよう勧告しました。 • 転送の途中でファイルが壊れていないかを確かめるだけなら、MD5やSHA-1でも足ります。 • 電子署名や証明書のように、偽造を防ぐ必要がある場面ではSHA-256以上を使います。 • 配布者がMD5とSHA-256の両方を公開しているなら、SHA-256で確かめてください。

使用しているオープンソース: hash-wasm (MIT)

最終更新日: