SHA-256ハッシュ生成について
SHA-256は、SHA-2ファミリーに属する暗号学的ハッシュ関数です。短い単語でも、文書でも、数GBのディスクイメージでも、どんな入力も256ビットの固定長の値に変換します。この値は通常、64文字の16進数で書き表されます。入力が1ビット変わるだけでまったく異なるハッシュになるため、ダウンロードしたファイル、バックアップ、コピーしたファイルが完全で変更されていないことを確かめる標準的な方法として、SHA-256のチェックサムが使われています。
このツールは、テキスト(UTF-8でエンコード)とファイルのハッシュを計算します。ファイルはバックグラウンドのワーカーで処理され、大きなファイルは4 MBずつ読み込みながら少しずつハッシュを計算するため、非常に大きなファイルでも、メモリに丸ごと読み込むことなく、ページを固まらせずに確認できます。提供元が公開しているチェックサムを貼り付ければ、一致するかどうかがすぐにわかります。
ハッシュの計算はすべてブラウザ内でローカルに行われます。テキストやファイルがアップロードされることはありません。
使い方
- 「入力」で「テキスト」または「ファイル」を選びます。
- テキストの場合は、「ハッシュを計算するテキスト」に入力または貼り付けます。「SHA-256(16進数)」と「SHA-256(Base64)」の欄は入力に合わせて更新されます。
- ファイルの場合は、「ファイルを選択」をクリックするか、1つ以上のファイルを枠にドラッグします。ファイルは進行状況バーを表示しながら1つずつ処理されます。「キャンセル」でハッシュの計算を止め、「再計算」でキャンセルしたファイルをもう一度計算できます。
- チェックサムを確認するには、期待される値を「期待されるハッシュ値と比較」に貼り付けます。各結果に「一致」または「不一致」が表示されます。
- 大文字が必要な場合は「16進数を大文字で表示」にチェックを入れ、「コピー」ボタンでハッシュをコピーします。
主な機能
- どんなサイズのファイルでも: ファイルはWeb Workerの中で4 MBずつハッシュ関数に流し込まれるため、メモリの使用量は少なく、ページの反応も保たれます。64 MBまでのファイルでは、利用できる場合にブラウザ組み込みのWeb Cryptoを使い、それより大きなファイルではツール独自のSHA-256実装を使います。
- チェックサムの比較: 期待されるハッシュ値は、大文字・小文字を問わない16進数、またはBase64で貼り付けられます。sha256sumファイルからコピーした行("ハッシュ ファイル名")や、sha256:で始まる値も使えます。
- 複数のファイルを一度に: たくさんのファイルをまとめて追加し、それぞれの進行状況、時間、速度を確認できます。1つの期待されるハッシュ値をすべてのファイルと比較するので、ダウンロードフォルダの中から目的のファイルを見つけるのに役立ちます。
- 16進数とBase64で出力: ダイジェストを、小文字または大文字の16進数と、Base64で取得できます。Base64は、たとえばSubresource Integrityの属性で使われる形式です。
- 検証済みの実装: 組み込みのSHA-256コードは、公式のFIPS 180-4テストベクターと、実績のある参照実装を使って、0バイトから数MBまでの入力でテストされています。
使用例
ダウンロードしたインストーラーやISOイメージを確認する
ダウンロードページでは、"3f2a…9c1e distro-24.04.iso"のような行がよく公開されています。「ファイル」を選んでダウンロードしたISOを追加し、その行を「期待されるハッシュ値と比較」に貼り付けます。「一致」なら、ファイルは公開元がハッシュを計算したものとまったく同じです。
2つのコピーが同一か確認する
ファイルの元のコピーとバックアップの両方を追加します。両方のSHA-256が同じなら、名前や日付が違っていても、内容は1バイト単位で同一です。
Subresource Integrityの値を作る
CDNから配信するJavaScriptまたはCSSのファイルのハッシュを計算し、Base64の結果をコピーします。先頭にsha256-を付けると、<script>タグや<link>タグのintegrity属性に使えます。
コマンドラインと結果が異なる理由を知る
helloと入力すると2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824になります。シェルのコマンド echo "hello" | sha256sum では5891b5b5…6be03と表示されますが、これはechoが改行を加えるためです。同じバイト列のハッシュを計算するには echo -n を使ってください。
制限事項と注意点
- SHA-256だけではパスワードの保存に向きません。高速に動くよう設計されているため、盗まれたハッシュは1秒間に何十億回もの推測で攻撃される可能性があります。パスワードには、Argon2、scrypt、bcrypt、PBKDF2などの専用のパスワードハッシュ関数を一意のソルトとともに使い、SHA-256は完全性の確認に使ってください。
- ハッシュの一致が完全性の証明になるのは、期待される値が公開元のHTTPSページや署名されたチェックサムファイルなど、信頼できる情報源から得たものである場合だけです。ファイルを差し替えられる人は、たいていその隣に置かれたチェックサムも差し替えられます。
- 入力または貼り付けたテキストは、ブラウザによって改行がLFに正規化され、UTF-8でエンコードされます。テキストファイルの正確なバイト列(たとえばWindowsのCRLFの改行)でハッシュを計算するには、ファイルとして追加してください。
- 空(0バイト)のファイルも受け付けます。そのSHA-256は常にe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855なので、この値はファイルに内容がないことを意味します。
- ハッシュの計算速度はお使いのデバイスによって変わります。64 MBを超えるファイルや、Web Cryptoが使えないブラウザ(たとえばHTTPSで配信されていないページ)でのすべてのファイルには組み込みの実装を使うため、ネイティブコードより遅くなります。
- 計算できるのはSHA-256だけです。MD5、SHA-1、SHA-512などほかのアルゴリズムには対応していません。
よくある質問
SHA-256のハッシュは復号したり元に戻したりできますか?
いいえ。ハッシュは一方向の指紋のようなもので、暗号化されたデータではないため、復号するものがありません。あるハッシュになる入力を見つける唯一の方法は、入力を推測して比較することで、それが現実的なのは弱いパスワードのような短い入力やありふれた入力だけです。
ほかのツールと表示されるハッシュが違うのはなぜですか?
ほとんどの場合、入力がわずかに異なっています。末尾の改行(echoは改行を加えます)、WindowsとUnixの改行の違い、先頭や末尾のスペース、テキストのエンコードの違いなどです。ファイルの場合は、ダウンロードが完了しているか、正しいファイルを比較しているかを確認してください。
ユーザーのパスワードの保存にSHA-256を使うべきですか?
SHA-256だけでは不十分です。ソルトの有無にかかわらず、SHA-256はオフラインでの推測に耐えるには速すぎます。パスワードの保存には、Argon2id、scrypt、bcrypt、反復回数の多いPBKDF2など、意図的に遅くしたソルト付きのアルゴリズムが必要です。
16進数とBase64の出力の違いは何ですか?
どちらも同じ32バイトのダイジェストを表しています。16進数は64文字(0–9、a–f)で、チェックサムファイルや多くのWebサイトで使われています。Base64は44文字で、Subresource Integrityや一部のAPIなどで使われています。
ハッシュを計算するためにファイルはアップロードされますか?
いいえ。ファイルはこのページがお使いのデバイスから直接読み込み、ブラウザ内でハッシュを計算します。ネットワークには何も送信されず、大きなファイルもパソコンの外に出る必要はありません。