ハッシュ/暗号

HMAC Generator

秘密鍵を使ってテキストやファイルのHMAC(Hash-based Message Authentication Code)を計算 — MD5、SHA-1、SHA-256、SHA-384、SHA-512、SHA3-256、SHA3-512、RIPEMD-160の8種類のアルゴリズムを一度に。

HMAC (Hash-based Message Authentication Code) is a hash computed together with a secret key, proving a message hasn't changed and was sent by someone who knows that key. Unlike a plain hash, an HMAC can't be forged without knowing the secret.

How to use it

Common uses

Things to keep in mind

HMAC protects against tampering and confirms the sender's authenticity, but it doesn't encrypt the message itself — the content stays readable.

A mismatched HMAC is most often caused by different data encoding (e.g. JSON field order) or a stray whitespace or line break, not by a bug in the algorithm itself.

このツールに関する記事: HMAC:鍵付きハッシュが通常のハッシュとどう違うか

よくある質問

HMACと単純なハッシュの違いは何ですか?

単純なハッシュはデータが改ざんされていないことしか証明しません。HMACはさらに秘密鍵を使うため、完全性に加えて送信者が共有秘密を知っていたことも証明します。鍵を知らない人はアルゴリズムを知っていても有効なHMACを生成できません。

HMACにはどのハッシュアルゴリズムを選ぶべきですか?

HMAC-SHA256が堅実な現代的デフォルトです。HMAC-MD5やHMAC-SHA1のような古い選択肢もHMACとしては特に破られていませんが、新しいシステムにはSHA-256以上が推奨されます。

秘密鍵はどこかに送信されますか?

いいえ。HMACはWeb Crypto APIを使ってブラウザ内で完全に計算されます。鍵とメッセージはデバイスから外に出ることはありません。

なぜHMACを単純な等価演算子で比較してはいけないのですか?

単純な文字列比較は最初の不一致で処理を止めるため、比較にかかった時間から攻撃者は最初の何文字を正しく推測できたかを知ることができます(timing attack)。PHPのhash_equalsのような定数時間比較関数が必要です。

同じ鍵を複数の異なる目的で使い回してもよいですか?

推奨されません。同じ秘密鍵をウェブフックの署名と他の目的の両方に使用している場合、一方のシステムが侵害されるともう一方も自動的に侵害されます——目的ごとに個別の鍵を生成すべきです。

記事: ハッシュ/暗号

Hash Generator:MD5、SHA-1、SHA-256はどう違うのか

MD5が今もファイルの整合性検証に使われるが、パスワードには使われない理由。

Checksum Verifier:ファイルが壊れていないか確認する方法

一致するチェックサムがファイルの整合性を確認する一方、誰が作成したかは確認しない理由。

Bcrypt:パスワードが速くではなく遅くハッシュ化される理由

速いSHA-256がパスワードに向かない理由と、遅いbcryptが適切な選択である理由。

UUID:ほとんど重複しない識別子はどう生成されるか

UUID v4が数百万台のマシンで独立して、衝突リスクなしに生成できる理由。

パスワード生成ツール:パスワードを本当に強くするものは何か

辞書の単語からなる長いパスワードが、記号や数字を含む短いパスワードより強い理由。

AES:共通鍵暗号の仕組み

AESで同じ鍵がデータの暗号化と復号の両方に使われる理由と、それが公開鍵暗号とどう違うか。

Argon2:このアルゴリズムがパスワードハッシュコンペティションで優勝した理由

Argon2が古いパスワードハッシュ化アルゴリズムよりGPUを使った攻撃に対してどう優れた防御を行うか。

Scrypt:このアルゴリズムがなぜこれほど多くのメモリを必要とするか

scryptがASICデバイスでのクラッキングを困難にするために意図的に大量のメモリを要求する理由。

TOTP:認証アプリのワンタイムコードはどう機能するか

Google Authenticatorのコードがインターネットなしで動作し、時刻だけでサーバーと同期する理由。

PBKDF2:最も古い鍵ストレッチング標準

PBKDF2の推奨反復回数が毎年増え続ける理由。

X.509:SSL証明書の中身は何か

緑色の錠前を表示する前に、ブラウザがサイトの証明書で正確に何をチェックしているか。

PGP:公開鍵と秘密鍵による暗号化の仕組み

PGPの公開鍵は自由に共有できるが、秘密鍵は決して共有してはいけない理由。