ハッシュジェネレーター

テキストを下に入力すると SHA-1、SHA-256、SHA-384、SHA-512 のハッシュが同時に生成されます。鍵を指定すれば HMAC で署名もできます。Web Crypto API を使用し、すべての処理はブラウザー内でローカルに行われます。

ハッシュ関数について

暗号学的ハッシュ関数は入力を受け取り、固定サイズのバイト列を生成します。出力(ハッシュ)は入力に固有であり、わずかな変更でもまったく異なるハッシュが生成されます。

  • SHA-1 - 160ビット、セキュリティ用途では非推奨。Gitでは今も使用されています。
  • SHA-256 - 256ビット、SHA-2ファミリーの一部。一般的な用途に推奨。
  • SHA-384 - 384ビット、SHA-2ファミリーの一部。SHA-512の切り詰め版。
  • SHA-512 - 512ビット、SHA-2ファミリーの一部。最も強力な標準ハッシュ。

このページのダイジェストは HMAC の署名も含め、すべてブラウザー自身の Web Crypto API から得ています。手書きの実装は一切なく、どこにもアップロードされません。

結果を思った以上に左右する設定が 2 つあります。文字セットはどのバイトをハッシュするかを決めるため、同じ文でも UTF-8 と Windows-1252 では別のダイジェストになります。改行の設定はファイル由来のものすべてに効いてきます。CRLF で取ったダイジェストは LF で取ったものとは決して一致しないからです。照合欄にチェックサムを貼り付ければ、4 つのうちどれから出たものかをページが教えます。ラベルのないハッシュを特定する最短の方法です。

それは実際どう保存していますか

ハッシュもトークンもパスワードも、周りのコード以上には強くなりません。既定のままのコスト係数、誰も有効期限を見ていないトークン、リポジトリに入ってしまった秘密鍵。当社はアプリケーションを診断して堅牢化し、攻撃者が最初に届く場所をお伝えします。

セキュリティ診断を依頼する

よくある質問

別のツールと違うハッシュになるのはなぜですか
ほとんどの場合、アルゴリズムではなくバイト列が違うからです。末尾の改行、LF ではなく CRLF、UTF-8 ではなく Windows-1252 でエンコードされた文字。いずれも入力を変え、したがってダイジェストも変わります。このページに文字セットと改行の設定があるのは、その違いを明示するためです。
MD5 はどこへ行きましたか
削除しました。MD5 には実用的な衝突攻撃があり、攻撃者が手を触れたかもしれないファイルについて何も証明できません。加えてブラウザーの暗号インターフェースが提供していないため、手書きの実装をページに抱え込む必要がありました。新しく作るものには SHA-256 が妥当な既定です。
HMAC とは何で、いつ必要ですか
HMAC は共有シークレットをダイジェストに混ぜ込むので、鍵を持つ者だけが生成も検証もできます。Webhook の署名や API リクエストの署名に使ってください。そこでは通常のハッシュは何も証明しません。同じ本文からなら誰でも計算できるからです。
実際にはどれを使うべきですか
理由がなければ SHA-256 です。SHA-512 は多くの用途で意味のある差があるほど強いわけではありませんが、64 ビット環境では速いので、こちらも妥当な既定です。SHA-1 が並んでいるのは既存のソフトウェアが今も出力するからで、推奨ではありません。実用的な衝突攻撃があり、何かを守る用途に使うべきではありません。
入力したテキストはサーバーに届きますか
いいえ。すべてのダイジェストはブラウザー内で計算され、うち 4 つはブラウザー自身の暗号インターフェースが担います。入力した内容はアップロードされないため、トークンや設定ファイルなど、外部サービスに貼りたくないものでも安心してハッシュできます。