- SHA1
- - SHA256
- - SHA384
- - SHA512
-
SubtleCrypto を使用 — セキュアコンテキスト(https または localhost)が必要です。
何ができるか
入力したテキストのハッシュダイジェストを SHA-1・SHA-256・SHA-384・SHA-512 の4種、打ち込むそばから同時に計算します。各行はアルゴリズム、その16進ダイジェスト、専用のコピーボタンを表示し、すべてコピー は name: digest の4行をまとめて取り出します。ダイジェクトの全文は常にその行のツールチップに載るため、切り詰めで失われる情報はありません。ステータス行はアルゴリズムの数と入力のバイト数を表示します。ハッシュ計算はブラウザー内の WebCrypto の SubtleCrypto で実行され、これにはセキュアコンテキスト(https または localhost)が必要です。
使い方
- 入力 にテキストを打ち込むか貼り付けます。
- 4つのダイジェストはキーを打つたびに再計算されます。
- 行にカーソルを合わせるとダイジェストの全文を読めます。1つだけならその行のコピーボタン、4つまとめてなら すべてコピー を使います。
使用例
標準のテストベクトル abc:
| アルゴリズム | ダイジェスト |
|---|---|
| SHA-1 | a9993e364706816aba3e25717850c26c9cd0d89d |
| SHA-256 | ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad |
この入力のステータス行: 4 algorithms · 3 byte input。
1文字変えるだけで、すべてのダイジェストが完全に変わります。abd の SHA-256 は a52d159f262b2c6ddb724a61840befc36eb30c88877a4030b65cbe86298449c9 となり、上の abc のダイジェストとは読み取れる共通点がありません。
ハッシュの仕組み
ハッシュ関数は任意のサイズの入力を読み、固定サイズのダイジェストを生成します。同じ入力は必ず同じダイジェストを生みます。異なる入力は互いに無関係なダイジェストを生みます。これはアバランシェ効果のおかげです。入力の各ビットが出力の各ビットに影響するため、1文字の変更が結果全体を書き換えます。出力の長さは入力ではなくアルゴリズムの性質です:
| アルゴリズム | ダイジェストのバイト数 | 16進文字数 |
|---|---|---|
| SHA-1 | 20 | 40 |
| SHA-256 | 32 | 64 |
| SHA-384 | 48 | 96 |
| SHA-512 | 64 | 128 |
ダイジェスト自体は生のバイト列です。このツールはそれを16進数で表示し、1バイトが2文字になります。だから3バイトの入力でも64文字の SHA-256 が得られるのです。
この4つのアルゴリズムは互換性がありません。SHA-1 は衝突攻撃によって破られています。2017年の SHAttered 攻撃は同じ SHA-1 ダイジェストを持つ2つの異なる文書を作り出したため、SHA-1 を署名や検証に使ってはいけません。SHA-2 ファミリー(SHA-256 以上)は今も標準であり、SHA-256 がチェックサムと署名で一般的なデフォルトです。
知っておくと良いこと
- パスワードには使わないでください: パスワードの単純なハッシュは、ルックアップテーブルを使えば数秒で逆転されます。パスワードの保存には、Argon2 や bcrypt のような遅いソルト付きの構成が必要です。このツールはテキスト・ファイル・ダウンロードのダイジェストを調べ、検証するためのものです。
- エンコーディングが重要: 入力は UTF-8 のバイト列としてハッシュされるため、
éのような文字はステータス行では2バイトとして数えられます。 - 決定論的: 同じテキストをどのマシンに貼り付けても、同じ4つのダイジェストが得られます。だからこそダイジェストは指紋として使えるのです。
- セキュアコンテキスト必須: ページが https または localhost で読み込まれないと、ブラウザーは SubtleCrypto を提供しません。
- 関連ツール:
HashHashA one-way function that maps data of any size to a fixed-length digest. Same input, same digest; any change, different digest; not reversible.
Type Identifier、Base64Base64An encoding representing binary data as 64 safe ASCII characters, so it survives transport through text-only channels. It encodes — it does not encrypt.
、UUIDUUIDA 128-bit identifier generated to be practically unique without coordination, most commonly in version-4 (fully random) form.
Generator。