ハッシュ生成ツール — MD5、SHA-1、SHA-256、SHA-512、CRC32、HMAC

テキストやファイルを MD5、SHA-1、SHA-256、SHA-384、SHA-512、CRC32 でハッシュ化し、チェックサムを検証したり HMAC を計算したりできます。ファイルは端末の外に出ません。

43 バイト。改行や末尾のスペースも含まれます。「ハッシュが違う」という報告の大半は、目に見えない改行が原因です。
アルゴリズム
MD5…
SHA-1…
SHA-256…
SHA-512…
CRC32…
大文字・小文字、スペース、コロンは無視されます。sha256sum の 1 行("hash filename")をそのまま貼り付けても構いません。

テキストとファイルはブラウザ内でハッシュ化されます。ファイルはディスクから少しずつ読み込まれ、アップロードされることはありません。 すべての無料ツールを見る.

不具合や改善できそうな点を見つけましたか?いただいたメッセージはすべて読み、すぐに対応します。

このハッシュ生成ツールは、テキストやファイルの MD5、SHA-1、SHA-256、SHA-384、SHA-512、CRC32 のチェックサムを、ブラウザ上でまとめて計算します。ダウンロードしたファイルが配布元のサイトに載っているチェックサムと一致するかの確認、ロックファイルやサブリソース完全性(SRI)属性用の SHA-256 の取得、Webhook のデバッグ中の HMAC 署名の計算などに使えます。テキストは UTF-8 のバイト列としてハッシュ化され、sha256sum、OpenSSL、各プログラミング言語の標準ライブラリと同じ結果になります。複数のファイルを一度にドロップすると、すべてのチェックサムの表に加えて、sha256sum -c で検証できる sha256sum 互換のファイルが得られます。「各行を個別にハッシュ化」にチェックを入れれば、文字列のリスト全体を一度にハッシュ化できます。

ファイルはディスクから 4 MB ずつ読み込まれ、ストリーミング型のハッシュ関数に渡されるので、数 GB の ISO でもメモリに丸ごと読み込むことなく、1 バイトもアップロードせずに確認できます。進行状況が表示され、キャンセルもできます。正直に言うと 1 つ制限があります。ブラウザのタブでのハッシュ計算はネイティブのツールより遅いので、50 GB のディスクイメージなら、コマンドラインの sha256sum や certutil のほうが速く済みます。

使い方

  1. 上部で「テキスト」「ファイル」「HMAC」のいずれかを選びます。
  2. テキストの場合は入力するか貼り付けます。入力と同時にハッシュが更新されます。ファイルの場合はボックスにドロップするか、クリックして選びます。
  3. 大きなファイルをハッシュ化する前に、不要なアルゴリズムのチェックを外します。アルゴリズムが増えるほど時間がかかります。
  4. 配布元のチェックサムを「期待されるチェックサムと比較」に貼り付けると、一致か不一致かがはっきり表示されます。
  5. 比較相手のシステムが Base64 や大文字の 16 進数を使っている場合は、出力をその形式に切り替えてからコピーします。
  6. 多数のファイルは、まとめて選択するかドロップします。1 つずつ順番にハッシュ化され、すべてのチェックサムを sha256sum 形式の .txt か CSV でダウンロードできます。

よくある質問

複数のファイルのチェックサムをまとめて取得できますか?

はい。「ファイル」タブで最大 500 個のファイルをまとめて選択するかドロップしてください。チェックを入れたアルゴリズムで 1 つずつ順番にハッシュ化され、各ファイルは 4 MB ずつ読み込まれるのでメモリ使用量は低く抑えられます。読み込めないファイルは失敗と表示され、残りの処理は止まりません。結果は GNU coreutils 形式の .txt(sha256sum、md5sum、sha512sum の出力と同じなので、sha256sum -c で検証できます)か、すべてのアルゴリズムを含む CSV でダウンロードできます。既存の SHA256SUMS のリストを貼り付けて、各ファイルを照合することもできます。

1 行に 1 つずつ並んだ文字列のリストをハッシュ化できますか?

はい。「テキスト」タブで「各行を個別にハッシュ化」にチェックを入れてください。最大 5,000 行まで、各行を改行を除いた UTF-8 として個別にハッシュ化し、表はタブ区切りのテキストとしてコピーするか、CSV としてダウンロードできます。

MD5、SHA-1、SHA-256 の違いは何ですか?

出力のサイズと安全性が異なるハッシュ関数です。MD5 は 128 ビット、SHA-1 は 160 ビットを出力しますが、どちらもセキュリティ用途では破られています。研究者が同じハッシュを持つ 2 つの異なる入力を作れるからです(MD5 は 2004 年から、SHA-1 は 2017 年の SHAttered 攻撃で公に)。SHA-256 は 256 ビットを出力し、実用的な攻撃は知られていません。セキュリティに関わる用途には SHA-256 か SHA-512 を使ってください。MD5 と SHA-1 は、偶発的な破損の検出には今でも問題なく使えます。

ファイルのチェックサムを検証するには?

「ファイル」タブを開き、ダウンロードしたファイルをドロップして、ダウンロードページのチェックサムを比較欄に貼り付けます。一致すれば、手元のファイルは配布元がハッシュ化したファイルと 1 バイト単位で同じです。同じ種類どうしを比べているか確認してください。SHA-256 のチェックサムは 16 進数で 64 文字、SHA-1 は 40 文字、MD5 は 32 文字です。本当に確かめたいなら、チェックサムはファイルと同じミラーからではなく、公式サイトから HTTPS で入手してください。

ハッシュは元に戻したり復号したりできますか?

いいえ。ハッシュは一方向関数で、鍵もなく、復号するものもありません。「MD5 復号」をうたうサイトが実際にしているのは、よくある文字列をあらかじめハッシュ化した表からハッシュを探すことです。だからこそ短いパスワードやよくあるパスワードのハッシュは簡単に見つかり、パスワードは素の SHA-256 ではなく、bcrypt や Argon2 のような低速でソルト付きのアルゴリズムで保存しなければなりません。

自分のコードで計算したハッシュと一致しないのはなぜですか?

入力のバイト列が、たいていは目に見えない形で異なっています。よくある原因は、末尾の改行(echo は改行を付けるので echo -n を使う)、LF ではなく Windows の CRLF の改行、UTF-8 以外の文字コード、先頭や末尾のスペース、16 進数のダイジェストと Base64 のダイジェストの比較などです。ハッシュは 1 バイト違うだけでまったく別物になるので、テキストボックスの下に表示されるバイト数を確認してください。

HMAC とは何ですか?どんなときに必要ですか?

HMAC(RFC 2104)は、秘密鍵とハッシュ関数を組み合わせて、鍵を持つ人だけが作れる署名を生成します。Stripe、GitHub、Shopify などの Webhook 提供元は、ペイロードに HMAC-SHA256 で署名しているので、リクエストが本当にその提供元から来たものかを検証できます。これを sha256(key + message) のように自作しないでください。SHA-256 ではこの構成は伸長攻撃(length extension attack)に弱く、HMAC はそれを防ぐために設計されています。

CRC32 はハッシュですか?

チェックサムであって、暗号学的ハッシュではありません。CRC32 は非常に高速で、通信中のビット反転のような偶発的なエラーの検出に優れているため、ZIP、gzip、PNG、Ethernet で使われています。意図的な偽造はたやすいので、ファイルが改ざんされていないことの証明には決して使わないでください。

用途別のハッシュの選び方

• ダウンロードしたファイルを配布元のチェックサムと照合する:配布元が公開しているアルゴリズム。通常は SHA-256。

• セキュリティに関わる完全性の確認(サブリソース完全性、パッケージのロックファイル、コード署名、証明書):SHA-256 か SHA-384。SRI 属性は Base64 を使うので、出力の切り替えスイッチがあります。

• 共有シークレットによる API リクエストや Webhook の署名:HMAC-SHA256。

• パスワードの保存:これらのどれでもありません。意図的に低速でソルト付きの bcrypt、scrypt、Argon2id を使ってください。高速なハッシュでは、攻撃者が GPU で毎秒数十億回の推測を試せてしまいます。

• 重複排除、キャッシュキー、ETag、偶発的な破損の検出:衝突を偽造しようとする人がいないので、MD5、SHA-1、CRC32 で十分かつ高速です。

大きなファイルのハッシュ計算の仕組み

ブラウザに組み込まれた WebCrypto API は、メモリ上にすべて揃ったバッファーしかハッシュ化できません。テキストならそれで問題なく、このツールもテキストにはそれを使います。しかし 4 GB のファイルでは 4 GB をタブに読み込むことになり、ほとんどの端末で失敗するかクラッシュします。

そのため、ファイルは SHA-1、SHA-256、SHA-384、SHA-512、CRC32 のストリーミング実装(MD5 には spark-md5)に通し、File.slice で各部分をディスクから直接読み込みながら、4 MB ずつ処理します。ファイルサイズにかかわらず、メモリ使用量は一定です。これらの実装は、境界となる長さとランダムなデータで、OpenSSL ベースの Node の crypto モジュールと 1 バイト単位で一致することをテストしています。

最近のノートパソコンなら、MD5、SHA-1、SHA-256 でおおよそ毎秒 150〜250 MB、SHA-384 と SHA-512 はその 3 分の 1 程度が目安です。後者の 64 ビット演算は、JavaScript では 32 ビットの部品で模倣する必要があるためです。選択したアルゴリズムはすべてファイルの 1 回の読み込みを共有するので、不要なもののチェックを外すのが最も簡単な高速化の方法です。

チェックサムファイルの読み方

Linux ディストリビューションやオープンソースプロジェクトは、SHA256SUMS のようなファイルを公開しています。各行は、16 進数のダイジェスト、スペース 2 つ、ファイル名の順で、sha256sum が出力する形式です。macOS の shasum も同じ形式を使います。BSD 系のツールは代わりに SHA256 (file.iso) = digest と書きます。

比較欄にはどちらの形式の行も貼り付けられます。ツールはダイジェストを取り出して残りを無視し、大文字・小文字、スペース、コロンも無視します。プロジェクトが署名ファイル(SHA256SUMS.gpg や .sig)も公開している場合、チェックサムのリスト自体がすり替えられていないことを証明するのは、プロジェクトの鍵でその署名を検証することです。

関連する無料ツール

  • bcrypt ハッシュ生成 — 選んだコストで bcrypt によるパスワードのハッシュを作成し、パスワードと bcrypt ハッシュの照合、ハッシュの各部分の意味の確認ができます。
  • Base64 エンコーダー / デコーダー — テキストやファイルを Base64 にエンコードし、画像を CSS や <img> のコード付きでデータ URI に変換、Base64 をプレビュー可能なファイルにデコードできます。データはブラウザの外に出ません。
  • パスワード生成 — 強力なランダムパスワード、覚えやすいパスフレーズ、PIN を生成します。すべてブラウザ内で動作し、何も送信・保存されません。
  • TOTP ジェネレーター — Base32 のシークレットからカウントダウン付きで 2FA コードをリアルタイムに生成し、認証アプリ用の otpauth:// QR コードの作成や、既存の URI の読み取りができます。