使い方
- ハッシュ値を 1 つ貼り付けます。0x、sha256=、sha384- などのラベルは取り除きますが、パスワードハッシュは先頭の $、{、* も含めてそのまま貼り付けてください。
- 結果を確認します。判別された形式とそのビット数に続いて、可能性のあるアルゴリズムが表示され、最も可能性の高いものには「最有力」の印が付きます。文字列に含まれていれば、bcrypt のコスト係数や、sha256crypt、sha512crypt、PBKDF2 のラウンド数も表示されます。
- MD5、SHA-1、SHA-256、SHA-512、CRC-32、CRC-32C の候補では、「ツールを開く」から対応する計算ツールに移動できます。
- 元のテキストがわかっている場合や見当がついている場合は、「テキストと照合」に入力すると、どのアルゴリズムでそのハッシュ値が再現されるかを確認できます。
ハッシュ値の種類を判定するしくみ
ハッシュアルゴリズムの出力サイズはそれぞれ決まっており、16進数では 1 バイトを 2 文字で表すため、16進数文字列の長さが最も有力な手がかりになります。このツールは使用されている文字も確認し、パスワードハッシュの形式が先頭に付けるプレフィックスも探します。
| 16進数の文字数 | ビット数 | 主なアルゴリズム |
|---|---|---|
| 8 | 32 | CRC-32、CRC-32C、Adler-32 |
| 32 | 128 | MD5、NTLM、MD4 |
| 40 | 160 | SHA-1、RIPEMD-160 |
| 56 | 224 | SHA-224、SHA3-224 |
| 64 | 256 | SHA-256、SHA3-256、BLAKE2s、Keccak-256 |
| 96 | 384 | SHA-384、SHA3-384 |
| 128 | 512 | SHA-512、SHA3-512、BLAKE2b、Whirlpool |
ただし、長さだけでは判断できません。優れたハッシュ関数の出力はランダムなデータのように見え、アルゴリズムを示す目印を含まないからです。32 文字の値は MD5、MD4、NTLM のいずれの可能性もあります。NTLM は Windows がアカウントのパスワードに使う形式です(UTF-16LE で表したパスワードの MD4)。そこでこのツールは、候補を一般的なものから順に並べます。通常は MD5 を先頭にしますが、ハッシュ値がすべて大文字の場合は、Windows のパスワードダンプツールの一部がそのように出力するため、NTLM を先頭にします。同様に、Ethereum の Keccak-256 と標準化された SHA3-256 はパディングが異なるだけで、どちらも16進数 64 文字になります。
Base64 のダイジェストとパスワードハッシュの形式
ダイジェストを16進数ではなく Base64 で表記するシステムもあります。16 バイトの MD5 なら 24 文字(Content-MD5 ヘッダーなど)、SHA-1 なら 28 文字、SHA-256 なら 44 文字、SHA-384 なら 64 文字(サブリソース完全性の integrity 属性など)、SHA-512 なら 88 文字です。このツールは長さをバイト数に換算し直し、同じ候補を表示します。パディングの省略や URL セーフの文字にも対応していますが、sha384- のようなプレフィックスは先に取り除いてください。
パスワードハッシュの形式は自己記述的です。プレフィックスがアルゴリズムを示し、ソルトやコストの設定も文字列の中に書き込まれています。最近の形式はソルト付きで、意図的に遅くなるように設計されています。表の最後の 2 行にある LDAP と MySQL の形式は SHA-1 を使った高速な方式で、ソルトを加えるのは {SSHA} だけです。
| 先頭の文字列 | 形式 | 主な使用場所 |
|---|---|---|
$2a$、$2b$、$2y$ | bcrypt。常に 60 文字で、続く 2 桁の数字がコスト係数です。1 増えるごとに計算量が 2 倍になります | Web フレームワーク、PHP の password_hash() |
$argon2id$ | Argon2id。メモリ(m)、時間(t)、並列度(p)の設定を含みます | 最近のアプリケーション。OWASP が推奨 |
$6$、$5$ | sha512crypt、sha256crypt。rounds= を含む場合があります | Linux の /etc/shadow |
$y$ | yescrypt | 現在の多くの Linux ディストリビューションの /etc/shadow |
$1$、$apr1$ | md5crypt、Apache MD5 | 古い Unix システム、.htpasswd |
pbkdf2_sha256$ | PBKDF2-SHA256。反復回数を含みます | Django |
{SHA}、{SSHA} | SHA-1、ソルト付き SHA-1 | LDAP ディレクトリ |
* と16進数 40 桁 | MySQL 4.1 以降の PASSWORD() | MySQL のユーザーテーブル |
判定は解読ではありません
ハッシュ関数は一方向です。このツールは文字列の形だけを調べるもので、入力を明らかにしたり、復号したり、検索したりすることはできず、サーバーやオンラインのデータベースに何かを送信することもありません。入力を突き止める唯一の方法は、候補を推測して 1 つずつハッシュ化することです。hashcat や John the Ripper などのパスワード復旧ツールは、アルゴリズムがわかるとこの作業を行います。bcrypt や Argon2 のようなソルト付きの低速な形式は、この推測のコストを高くするために存在します。調べるのは、扱う権限のあるハッシュ値だけにしてください。
テキストと照合は、特定の推測を 1 つ検証する機能です。入力したテキストを UTF-8 として MD5、SHA-1、SHA-256、SHA-384、SHA-512、CRC-32、CRC-32C でハッシュ化し、どの結果がハッシュ値と一致するかを表示します。ハッシュ値は大文字・小文字どちらの16進数でも、Base64 でもかまいません。ソルト付きのパスワードハッシュや HMAC はソルトや秘密鍵にも依存するため、この機能では確認できません。鍵付きの値には、鍵を指定して HMAC 生成ツールを使用してください。
よくある質問
このツールで元のテキストやパスワードがわかりますか?
いいえ。わかるのは可能性の高いアルゴリズムだけです。ハッシュ関数は元に戻せません。オンラインの「ハッシュ復号」サービスは、一般的な単語や流出したパスワードのハッシュ値を集めた表から値を検索しているだけで、ソルトのない弱い入力にしか通用しません。
1 つのハッシュ値に対して複数のアルゴリズムが表示されるのはなぜですか?
出力サイズが同じアルゴリズムは、長さも使用文字も同じ文字列を生成し、ハッシュ値の中にはどれが使われたかを示す情報がありません。各アルゴリズムがどれだけ一般的かに基づいて、最も可能性の高い候補が先頭に示されます。確実に知るには、既知の入力からハッシュ値を計算し直してください。
16進数 32 文字の文字列は必ず MD5 ですか?
たいていはそうですが、必ずではありません。NTLM、MD4、MD2、RIPEMD-128 も同じ長さになり、ハイフンなしの UUID やランダムなトークンなど、16進数で表した 128 ビットの値もすべて同じ長さです。決め手は文脈です。Windows のパスワードハッシュなら NTLM、ファイルのチェックサムなら MD5 です。
「テキストと照合」で一致しないのはなぜですか?
echo は、echo -n や printf を使わない限り改行を追加します)、空白や大文字・小文字の違い、UTF-8 以外の文字コードでハッシュ化されたテキスト、パスワードハッシュや HMAC のようなソルトや鍵の使用、または SHA-3、BLAKE2、NTLM など照合の対象外のアルゴリズムです。ここにパスワードハッシュを貼り付けても安全ですか?
解析はすべてブラウザ内で行われ、ハッシュ値が送信または保存されることはありません。ただし、実際のシステムのパスワードハッシュがあれば、それを手にした人は誰でもオフラインで推測を試せます。そうしたハッシュ値は機密情報として扱い、チケット、チャット、スクリーンショットに含めないでください。