本文へスキップ
LeedyBox
支援する

ハッシュ生成: MD5・SHA-1・SHA-256・SHA-512・HMAC

テキストやファイルの MD5、SHA-1、SHA-256、SHA-384、SHA-512 ハッシュや HMAC をブラウザで計算し、期待されるチェックサムと比較できます。

入力

テキストは空白や改行も含め、入力したとおりにハッシュ化されます。このボックス内の改行は LF としてハッシュ化されます。

結果

テキストを入力するかファイルを選択すると、ハッシュが表示されます。

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

16進数の値は大文字・小文字を区別せずに比較し、Base64 の値は完全に一致する必要があります。

注意事項

  • MD5 と SHA-1 には既知の衝突攻撃があるため、セキュリティ用途には使用しないでください。ダウンロードしたファイルを公開されたチェックサムと比べるなど、セキュリティ以外の確認にだけ使ってください。
  • ハッシュは暗号化ではありません。このツールでハッシュを元のテキストやファイルに戻すことはできません。
  • パスワードの保存に単純なハッシュを使わないでください。Argon2、scrypt、bcrypt などのパスワード専用のハッシュ方式を使ってください。
  • ハッシュはバイト列から計算されるため、同じテキストでも改行コード(CRLF または LF)、文字コード、余分な空白が異なると、別のハッシュになります。
  • HMAC はハッシュと秘密鍵を組み合わせたものです。ここでは HMAC-MD5 は提供していません。
  • テキストとファイルはブラウザ内で処理され、LeedyBox には送信されません。ファイル全体をメモリに読み込むため、非常に大きなファイルでは時間がかかることがあります。

使用する前に結果を確認してください。 このツールは現状のまま無保証で提供されており、結果が不完全または誤っている場合があります。 利用規約

MD5 と SHA-1 はセキュリティ用途には適していません。ハッシュは暗号化ではありません。また、チェックサムが一致しても、そのチェックサムの元になったデータと同じであることが分かるだけです。

使い方

  1. 「入力」で、入力または貼り付けたテキストをハッシュするには「テキスト」を、端末上のファイルをハッシュするには「ファイル」を選びます。
  2. ファイルの場合は、ファイルを選択するかボックスにドロップしてから「ハッシュを計算」を押します。その後「HMAC モード」やキーを変更した場合は、もう一度ボタンを押してください。
  3. 「出力形式」で「16進数(小文字)」「16進数(大文字)」「Base64」のいずれかを選びます。形式を変えても同じ結果の表記が変わるだけなので、再計算はされません。
  4. 通常のハッシュではなく HMAC を計算するには、「HMAC モード」にチェックを入れ、表示された欄に秘密鍵を入力します。HMAC-MD5 には対応していないため、MD5 の行には「HMAC では使用できません」と表示されます。
  5. ダウンロードしたファイルを確認するには、公開されている値を「期待されるチェックサム(任意)」に貼り付けます。計算されたすべての結果と比較され、一致した行に「一致」と表示されます。

よくある質問

sha256sum やほかのツールとハッシュが異なるのはなぜですか?

テキスト欄は入力された文字をそのままハッシュするため、わずかな違いでも結果が変わります。よくある原因は末尾の改行です。echo hello | sha256sum は「hello」の後に改行を付けてハッシュするため「hello」だけの SHA-256 とは異なり、printf hello | sha256sum は改行を付けません。見た目が同じ文字でも保存のされ方が異なることがあり、たとえば é は 1 つのコードポイントの場合も、e の後に結合用のアクセント記号が続く場合もあります。ファイルのバイト列をそのままハッシュするには、内容を貼り付けずに「ファイル」を使ってください。テキスト欄はテキストを UTF-8 でエンコードし、改行を LF としてハッシュするためです。

公開されているチェックサムは正しいのに、一致しないのはなぜですか?

ハッシュ値だけを貼り付けてください。比較の前に空白、タブ、改行が取り除かれるため、チェックサムファイルの行全体を貼り付けるとファイル名が値の一部になります。また、sha256: のような接頭辞が付いていても一致しません。計算されたすべてのアルゴリズムと比較するので、アルゴリズムを選ぶ必要はありません。値だけを貼り付けても一致しない場合は、「HMAC モード」がオフになっていること、そしてチェックサムが MD5、SHA-1、SHA-256、SHA-384、SHA-512 のいずれかであることを確認してください。SHA-3 や BLAKE2 などのほかのアルゴリズムは、ここでは計算されません。それでも一致しない場合は、バージョンが違う、ダウンロードが途中で終わっているなど、ファイル自体がチェックサムの元になったファイルと異なる可能性が高いです。

結果が e3b0c442 や d41d8cd9 で始まるのはどういう意味ですか?

空の入力(0 バイト)のハッシュを 16進数で表した値です。SHA-256 の値は e3b0c442 で始まり b855 で終わり、MD5 の値は d41d8cd98f00b204e9800998ecf8427e です。「HMAC モード」がオフの場合、テキスト欄を空にしたときや 0 バイトのファイルを選んだときにこの値が表示されます。中身があるはずのデータに対して自作のプログラムがこの値を出した場合は、空の文字列や空のファイルをハッシュしている可能性が高いです。

HMAC モードで Webhook や API の署名を確認できますか?

署名が SHA-1、SHA-256、SHA-384、SHA-512 による HMAC であれば、多くの場合は可能です。HMAC-MD5 には対応していません。「HMAC モード」にチェックを入れて署名用の秘密鍵を入力し、リクエスト本文を入力に使い、署名を sha256= などの接頭辞を除いて「期待されるチェックサム(任意)」に貼り付けます。16進数と Base64 のどちらの署名も認識されます。入力は署名されたバイト列と同じである必要があるため、整形し直した JSON 本文は一致せず、CRLF の改行を含む本文はファイルに保存して「ファイル」でハッシュする必要があります。多くのサービスは、本文の前にタイムスタンプと区切り文字を付けたものなど、本文以外も署名の対象に含めるため、具体的に何が署名されるかはサービスのドキュメントで確認してください。

秘密鍵が 16進数や Base64 で渡されました。使えますか?

サービスが鍵の文字列をそのまま使う場合に限り使えます。「秘密鍵(UTF-8)」欄は入力した文字の UTF-8 バイト列を使い、16進数や Base64 をデコードしないため、サービスが署名の前に鍵をデコードする場合は、ここで計算した HMAC とは一致しません。欄の先頭や末尾の空白も鍵の一部として扱われます。

サブリソース完全性(SRI)のハッシュはどう作りますか?

「ファイル」を選んでスクリプトまたはスタイルシートを選択し、「HMAC モード」がオフになっていることを確認してから「ハッシュを計算」を押し、「出力形式」を「Base64」にします。SHA-384 の値の前に sha384- を付けると integrity 属性の値になり、sha256- と sha512- も同じ方法で使えます。ファイルはブラウザがダウンロードするものとバイト単位で同じである必要があり、異なるとブラウザはそのファイルを使用しません。別のオリジンから読み込むファイルには crossorigin 属性も必要で、そのファイルのサーバーが CORS を許可している必要があります。

16進数と Base64 の出力は何が違いますか?

どちらも同じダイジェストを表します。16進数は 1 バイトを 2 文字で表すため SHA-256 では 64 文字になり、sha256sum などのツールが出力する形式です。Base64 はより短く、SHA-256 では 44 文字です。Base64 の出力は +、/ と = のパディングを使う標準のアルファベットで、- と _ を使う URL セーフ版ではありません。そのため、URL セーフ版の値や、= のパディングを取り除いた値は、比較で一致しないことがあります。