SHA-1 ハッシュジェネレーターとは?

SHA-1ハッシュジェネレーターは、任意の入力に対して160ビット(40文字の16進数)のダイジェストを生成します。SHA-1はGitのコミットハッシュ、従来の証明書フィンガープリント、衝突耐性が重要でないデータ整合性検証などで使用されています。

テキストを入力するかファイルをドロップすると、お使いの端末上で SubtleCrypto が計算した 40 文字の SHA-1 ダイジェストが表示されます。期待値を Compare 欄に貼り付ければバッジが緑か薔薇色に変わるので、16 進数を目視で照合せずに済みます。Git はコミットやブロブのアドレスに SHA-1 を使い続けているので、ターミナルを開かずに Git オブジェクトのハッシュを素早く確認できます。

使い方

  1. ステップ1 — テキストを入力または貼り付けるか、ファイルをドロップしてSHA-1ダイジェストを計算します。
  2. ステップ2 — ハッシュはお使いのデバイス上で生成され、データはアップロードされません。
  3. ステップ3 — 40文字の16進文字列をコピーするか、期待値と照合します。

使用するタイミング

  • ターミナルを開かずに Git の commit/blob ハッシュを確認・照合する。
  • いまだ SHA-1 で配布されている古い TLS 証明書のフィンガープリントを照合する。
  • MD5 は廃止済みだが SHA-256 が公開されていない、レガシーなソフトの checksum を合わせる。

結果

GitオブジェクトのSHA-1ハッシュがリポジトリログに表示されている値と一致するか確認する必要がある場合は、オブジェクトの内容をここに貼り付けて出力を比較します。

よくある質問

SHA-1 はまだ安全ですか?
署名や証明書には安全ではありません。Google の SHAttered 攻撃(2017 年)で同じ SHA-1 を持つ 2 つの PDF が作られ、以降コストは下がる一方です。Git アドレス用途やレガシー互換ではまだ使われますが、新規システムは SHA-256 以上を選ぶべきです。
破られているのに Git が SHA-1 を使い続けるのはなぜ?
Git は SHA-1 をコンテンツアドレスとして使っており、安全プリミティブではありません。衝突は履歴改ざんで問題になるだけで、一意な命名そのものには影響しません。Git プロジェクトは 2020 年から SHA-256 へ移行中ですが、公開リポジトリの大半は今も SHA-1 です。
SHA-1 と SHA-2 はどう違う?
SHA-1 は単一の設計で 160 bit のダイジェストを出します。SHA-2 は SHA-224、SHA-256、SHA-384、SHA-512 を含むファミリで、内部構造が異なり出力長も長い。実用的な衝突攻撃は知られていません。
ここで 2 つの SHA-1 文字列を比較できますか?
できます。期待するハッシュを Compare 欄に貼り付けると、一致でバッジが緑、不一致で薔薇色になります。比較は大文字小文字を区別しないので、abc123 と ABC123 は同じと見なされます。
ファイルはアップロードされますか?
されません。お使いの端末上でファイルが ArrayBuffer として読み込まれ、SubtleCrypto に渡され、すべてページ内で完結します。ネットワークを切ってもハッシュは正しく計算されます。

関連ツール