ハッシュ判定ツール(逆引き)|MD5・SHA-1・SHA-256・SHA-512・SHA-3・BCrypt・Argon2を自動判定
ハッシュ値らしき文字列を貼り付けるだけで、文字数・文字種・プレフィックスからMD5・SHA-1・SHA-256・SHA-512・SHA-3・BCrypt・Argon2のうちどのアルゴリズムで生成された可能性が高いかを判定します。判定はすべてブラウザ内で完結します。
ハッシュ値そのものには生成に使ったアルゴリズム名は記録されていません。同じ出力長を複数のアルゴリズムが共有する場合があるため、この判定結果は文字数・文字種・プレフィックスに基づく「最も可能性の高い推測」であり、100%の断定ではありません。
ハッシュ値からアルゴリズムを推定する
**ハッシュ値そのものには、生成に使ったアルゴリズム名は記録されていません。** それでも推定はできます。手がかりは3つで、**出力の文字数**(MD5は32文字、SHA-1は40文字、SHA-256は64文字、SHA-512は128文字)、**文字種**(16進数か Base64 か)、そして **`$2b$` や `$argon2id$` のようなプレフィックス**です。このツールはこの3点から最も可能性の高いアルゴリズムを判定します。
**ただしこれは断定ではありません。** 同じ出力長を複数のアルゴリズムが共有するためで、たとえば 64文字の16進数は SHA-256 だけでなく SHA3-256 や BLAKE2s でもあり得ます。一方、bcrypt や Argon2 のように**パラメータを含む文字列形式**を持つものは、プレフィックスから確実に見分けられます。判定はすべてブラウザー内で完結し、貼り付けた文字列が送信されることはありません。
判定する手順
- ハッシュ文字列を貼り付ける 前後の空白は無視されます。
- 判定結果を読む 候補となるアルゴリズムが、可能性の高い順に示されます。
- 文字数と文字種を確かめる **なぜその候補になったのか**が分かるよう、根拠も併せて表示されます。
- プレフィックスの有無を見る `$` で始まる形式なら、候補はほぼ一つに絞れます。
使いこなすためのヒント
- 判定は文字数・文字種(16進数かBase64か)・プレフィックスのみを手がかりにしており、実際にハッシュを計算し直して検証しているわけではありません。あくまで「形式から推測できる候補」を示すツールです。
- BCrypt(
$2a$/$2b$/$2y$)とArgon2($argon2id$等)はプレフィックス自体にアルゴリズム名とパラメータが埋め込まれているため、高い確度で判定できます。 - 64桁の16進数はSHA-256が最も一般的ですが、SHA3-256も同じ桁数になるため、掲載元のシステム(言語・ライブラリ)が分かっている場合はそちらの情報も参考にしてください。
- 複数行にコピーされたハッシュダンプ(改行・スペース区切り)も、内部の空白文字を自動的に除去してから判定するのでそのまま貼り付けて構いません。
- 判定結果に確信が持てない場合は、ハッシュの生成元(アプリケーションのソースコードやドキュメント)を確認するのが最も確実です。
こんなときに使えます
引き継いだシステムの調査
データベースに残るハッシュがどの方式で作られたかを、まず当たりを付けられます。
移行の可否を判断する
**bcrypt や Argon2 なら、パラメータごと保持して段階的に移行できます。**
セキュリティ上の問題を見つける
**MD5 や SHA-1 がパスワード保存に使われていれば、それ自体が是正対象です。**
ログやダンプの中身を読む
正体不明の長い16進文字列が何なのかを調べる糸口になります。
ハッシュの用語
- MD5
- 128ビットのハッシュ関数です。**衝突が現実的に作れるため、パスワードにも改ざん検知にも使ってはいけません。**
- SHA-1
- 160ビットのハッシュ関数です。MD5 同様、衝突攻撃が実証されており非推奨です。
- SHA-256 / SHA-512
- SHA-2 系の関数です。**高速であることがパスワード保存では逆に弱点になります。**
- bcrypt
- パスワード専用のハッシュで、コスト係数を文字列に含みます。`$2a$`・`$2b$` で始まります。
- Argon2
- 2015年の競技会で優勝したパスワードハッシュです。`$argon2id$` で始まり、メモリ量も調整できます。
- ソルト
- ハッシュごとに変える乱数です。bcrypt や Argon2 は**これを文字列に埋め込んで持ちます。**
よくある質問
$2b$や$argon2id$のようなアルゴリズム名・パラメータをテキストとして埋め込む「モジュラークリプト形式」を採用しているためです。この情報が読み取れる限り、アルゴリズムを一意に確定できます。
余談ですが ― なぜハッシュ値だけではアルゴリズムを断定できないのか
ハッシュ関数は「入力データを固定長の出力に変換する」ことが仕事であり、その出力(ダイジェスト)自体にはアルゴリズム名を示すメタデータは一切含まれません。これは設計上の必然です。もしメタデータを埋め込むと出力長が変わってしまい、「固定長」という暗号学的ハッシュ関数の重要な性質が崩れてしまいます。そのため私たちが手がかりにできるのは、出力の「見た目」(文字数・文字種)だけということになります。
この制約が最も顕著に現れるのがSHA-2系とSHA-3系の関係です。SHA-256とSHA3-256はまったく異なる内部構造(SHA-2はMerkle-Damgård構造、SHA-3はスポンジ構造)を持つのに、どちらも256ビット=16進数64桁の出力になるよう設計されています。SHA-224とSHA3-224、SHA-384とSHA3-384、SHA-512とSHA3-512も同様の関係にあり、出力長だけを見て一方に断定することはできません。実務ではSHA-2系が圧倒的に普及しているため、本ツールも桁数が一致した場合はSHA-2系を優先候補として提示していますが、これはあくまで統計的な傾向に基づく推測です。
一方でBCryptやArgon2のようなパスワードハッシュ化専用のアルゴリズムは、この曖昧さを解消するために「モジュラークリプト形式」という自己記述的なフォーマットを採用しています。$2b$12$...や$argon2id$v=19$...のように、先頭にアルゴリズム名・バージョン・パラメータをテキストとして埋め込むことで、ハッシュ値だけを見ても計算方法を一意に復元できるようにしているのです。このような形式のハッシュに出会ったら、断定的な判定が可能になります。
こうした判定作業は、レガシーシステムから発掘されたパスワードダンプの調査や、CTF(Capture The Flag)と呼ばれるセキュリティ競技での暗号解読チャレンジで実際に必要とされる場面があります。ハッシュ値からアルゴリズムを絞り込めれば、次に試すべき解析ツールやクラッキング手法(Hashcat等の攻撃モードの選択)を効率的に決められるためです。