ハッシュ逆算ツール

MD5・SHA・NTLM・RIPEMD ハッシュを辞書・総当たり・マスクでマルチスレッド復元

攻撃方法
ソルト・反復(任意)

hash(前 + 候補 + 後) を指定回数くり返します。例: md5(md5($pw)) → 2。

自分が忘れたパスワードやチェックサムの元の文字列を、辞書・総当たり・マスクで復元するためのツールです。計算は複数スレッドでブラウザ内でのみ実行され、ハッシュは送信されません。ソルト付きや十分に長いハッシュは復元できないことがあります。

ハッシュ逆算ツールについて

これは、自分が所有する忘れたパスワードやチェックサムを取り戻し、なぜ一部のハッシュが弱いのかを実際に確かめるための学習用ツールです。自分のものでないハッシュの原文を求める行為は違法になり得ます。自分の所有物・テストデータ、または明示的な許可がある場合にのみ使ってください。

ハッシュは数学的には元に戻せません。このツールも逆算はしません。候補となる文字列を作って1つずつハッシュし、目標のハッシュと一致するかを比べるだけです。つまり成否はアルゴリズムの種類よりも「原文が候補に含まれるか」「候補を何個作る必要があるか」で決まります。計算はすべてブラウザ内で行われ、入力したハッシュはサーバーに送られません。

取り戻せるもの・戻せないもの

扱うのはMD5・SHA-1・SHA-224/256/384/512・MD4・NTLM・RIPEMD-160といった「速い」ハッシュです。毎秒膨大な候補を試せるため、原文が短い・ありふれていればすぐ見つかり、長くランダムなら事実上見つかりません。弱いのはアルゴリズムではなく弱い原文です。

一方でbcrypt・scrypt・Argon2のような、わざと遅く設計されたパスワードハッシュ関数は扱いません。1件の計算に大きな時間をかけるため、候補を大量に試す方式自体が成り立ちません。漏えいしてもパスワードがなかなか破られないのは、こう保存されているからです。

貼り付けたハッシュの長さで種類を推定しますが、32文字(MD5・MD4・NTLM)や40文字(SHA-1・RIPEMD-160)は長さだけでは区別できません。自動判定は最も一般的なものを優先し、分かれば手動で選べます。

専用GPUツールより遅い理由

ハッシュ関数は非同期のcrypto.subtleではなく同期の純粋JSで自前実装しています。候補ごとに関数を非常に頻繁に呼ぶため、呼び出しごとの負荷が大きい非同期方式はかえって遅いからです。さらにCPUコア数だけワーカーを立て、探索空間を分担します。

それでも専用GPUツールとは差が大きく、GPUは同じ計算を数千コアで並列に行い毎秒数十億を試せます。このツールの目的は最高速度ではなく、ハッシュを外に出さずに仕組みを確かめることです。

実務でソルトを付ける理由

このツールには候補の前後に固定文字列を付け、結果を複数回ハッシュし直すオプションがあります。実際のシステムがそう保存するための再現用ですが、ここでソルトの効果が見えます。ソルトなしのハッシュは事前計算した対応表(レインボーテーブル)で一発照会できますが、ユーザーごとに異なるソルトを付けるとそうした表は無効になります。

ユーザーごとにソルトが違えば、同じパスワードの2人でもハッシュが異なります。ソルトは秘密である必要はなく(通常ハッシュと一緒に保存されます)、目的は「一度の計算で複数アカウントを同時に破る」ことを防ぐ点にあります。このツールで原文を再現するには正確なソルトを入れる必要があることが、それを直接示します。

結果が教える本当のこと

ありふれた、そして短いパスワードほど早く破れます。裏返せば安全なパスワードの条件になります。長く、辞書になく、個人情報(名前・誕生日・社名)から推測されないこと。NIST SP 800-63B(2025年改訂)は複雑さの規則(文字種の強制)より長さを重視し、漏えいパスワードの一覧と照合してはじくよう勧めています。

見つからなければ、その原文はこの方式では事実上破れないということで、それがよいパスワードの姿です。当サイトのパスワード生成器で長くランダムな値を作れば、このツールをいくら回しても出てきません。

例

短いありふれた語 vs 長いランダム値

入力
MD5ハッシュ2つ:一方はありふれた短い語、もう一方は16文字ランダム文字列のハッシュ
結果
前者は辞書パスでほぼ即座に発見、後者は探索範囲を全部回しても未発見

16文字ランダム(大小英字+数字+記号、約87種)の組み合わせ数は87^16 ≈ 3.4×10^30。毎秒数億試しても宇宙の年齢より長くかかります。

ソルトの有無の差

入力
同じ原文のSHA-1を、ソルトなし/前に固定文字列を付けて2回計算して比較
結果
2つのハッシュはまったく別の値。ソルトが分からなければ総当たりでも再現されない

前置オプションに正確なソルトを入れて初めて原文が再現されます。実務でソルトが漏えい対応の最初の防御線である理由です。

使い方

  1. 逆算するハッシュを貼り付けます。判定された種類が下に表示されます。
  2. アルゴリズムは自動判定のまま、または手動で選びます。
  3. 辞書・総当たり・マスクから方式を選び、必要ならソルトや反復回数を指定します。
  4. 実行します。見つかれば原文が、見つからなければ試行回数とともに未発見と表示されます。

主な用語

辞書攻撃
よく使われる弱いパスワードや単語の一覧を順にハッシュして照合する方式。大文字小文字・逆順などの変形も試すオプションがあります。
総当たり
選んだ文字集合で作れる組み合わせを短い順に試す方式。組み合わせ数が長さに指数的に増え、長いと事実上不可能です。
マスク(hashcat形式)
位置ごとに文字種を指定するパターン。?l小文字、?u大文字、?d数字、?s記号など。原文の形が分かるとき範囲を絞ります。
レインボーテーブル
事前計算したハッシュと原文の対応表。ソルトがあると無効化されます。

よくある質問

ハッシュは戻せないのでは?

その通りです。数学的な逆算ではなく、多数の候補をハッシュして一致を探すだけです。弱い・短い原文だけが現実的に見つかります。

なぜブラウザで?

遅いですが、ハッシュが外に出ません。専用GPUツールよりずっと遅いです。

bcryptハッシュもできますか?

できません。bcrypt・scrypt・Argon2はわざと遅く、この方式が成り立ちません。だからこそ実務で使われます。

他人のハッシュを扱ってよい?

自分のものでないハッシュの逆算は違法になり得ます。自分のデータ・明示的許可・学習目的にのみ使ってください。

関連ガイド

出典

基準日:

プライバシーとデータの扱い