SHA-256 は復号できますか?
できません。設計上、不可逆です。「SHA256 復号」をうたうサイトが行っているのはレインボーテーブルの逆引きです。よくある文字列を大量に事前計算してデータベースに保存しておき、渡されたハッシュに対応する記録があるかを調べているだけです。見つかったとしても、それは元の文字列がありふれたものだった、という意味にすぎません。長いランダムなパスフレーズや、ソルトを付けたパスワードは、この種のサイトでは決して見つかりません。
任意のファイルに対応、最大 50 MB
sha256sum のような「ハッシュ + 空白 + ファイル名」の行をそのまま貼り付けられます。ハッシュ部分だけを自動で取り出します。MD5 と同じく、厳密には違います。暗号化は可逆で、鍵があれば元に戻せます。SHA は一方向ハッシュ関数であり、任意の長さの入力を固定長のダイジェストに圧縮します。その過程で情報は失われるため、「元に戻す」という手順自体が存在しません。慣習的に「SHA256 暗号化」と呼ばれ、本ページでもその言い方に従っていますが、実際は SHA-256 値を計算することを指します。したがって「SHA256 復号」も存在しません——そう称するサイトが行っているのはレインボーテーブルの逆引きで、その仕組みは MD5 ハッシュ計算 のページで詳しく説明しています。
「ビット数が長いから安全」という単純な話ではなく、前の二つは実際に破られている、ということです。MD5 が同じで中身が違う 2 つのファイルを作ることは、普通のパソコンで数秒あればできます。SHA-1 は 2017 年に Google の SHAttered によって実際に衝突が示され、2020 年には選択プレフィックス衝突まで達して、コストは数万ドルにまで下がりました。つまり、中身は違うのにハッシュが同じファイルの組を用意し、照合を通したうえで別のものを掴ませることが可能だということです。SHA-256 には現時点で実用的な衝突手法が知られておらず、TLS 証明書、新しいバージョンの Git、ソフトウェア配布時の照合でも広く使われています。
これが最もよくある誤用です。SHA-256 の設計目標は速いことです——最近のグラフィックスカードは毎秒数十億回も計算できるので、総当たり攻撃をする側にとって好都合なのです。ユーザーのパスワードを保存するなら、bcrypt・scrypt・Argon2 のような遅いハッシュを使ってください。ソルト付与が組み込まれており(ユーザーごとにランダムなソルトを与え、レインボーテーブルやリスト型攻撃を防ぎます)、計算コストも調整できるため、ハードウェアが速くなったらコストを上げられます。SHA-256 に手作業でソルトを足せばレインボーテーブルは防げますが、特定のアカウントを狙った総当たりは防げません。
三つとも SHA-2 ファミリーに属し、違いは内部のワード長と出力長です。SHA-256 は 32 ビット演算で互換性が最も高く、ほとんどの場面での既定の選択肢です。SHA-512 は 64 ビット演算で、64 ビット CPU ではかえって速いことが多く、出力も長くなります。SHA-384 は SHA-512 を 384 ビットに切り詰めたもので、一部の証明書や TLS スイートで見かけます。特に要件がなければ SHA-256 を選んでください——照合したい相手の値も、たいていはこれです。
できません。設計上、不可逆です。「SHA256 復号」をうたうサイトが行っているのはレインボーテーブルの逆引きです。よくある文字列を大量に事前計算してデータベースに保存しておき、渡されたハッシュに対応する記録があるかを調べているだけです。見つかったとしても、それは元の文字列がありふれたものだった、という意味にすぎません。長いランダムなパスフレーズや、ソルトを付けたパスワードは、この種のサイトでは決して見つかりません。
セキュリティが関わるなら常に SHA-256 です。MD5 と SHA-1 はどちらも実際に衝突が示されており、改ざん検知にも署名にも使えません。MD5 を使うのは、相手から明示的に求められたときだけにしてください——たとえば古いシステムが公開している照合値が MD5 である場合です。MD5 を計算したいときは当サイトの MD5 ハッシュ計算をどうぞ。あちらのページには「MD5 復号」サイトの実際の仕組みを書いています。
セキュリティ用途には一切使えません。2017 年に実際の衝突が示され、ブラウザや認証局はとうに廃止しています。ここに SHA-1 を残しているのは、古いシステムやリポジトリ、古い文書が公開している照合値が今も SHA-1 であることが多く、突き合わせるために計算する手段が必要だからであって、まだ安全だからではありません。
上のアップロード欄にファイルをドラッグし、「照合」欄に配布元のハッシュ値を貼り付けて、計算を押してください。一致すれば緑、不一致なら赤で表示されます。貼り付けたハッシュの長さが選択中のアルゴリズムと合わない場合は、どれに替えるべきかを表示します——配布元が示したのは SHA-1 なのに SHA-256 を選んでいた、というのが不一致の原因として最も多いパターンです。
おそらくどちらも間違っておらず、入力が違うのです。よくある原因は三つ。テキスト末尾に余分な改行が入っている、改行コードが \r\n か \n か(Windows のメモ帳と Linux では異なります)、そして非 ASCII 文字の文字コードが UTF-8 でない、という三つです。本ページはテキストを UTF-8 として扱い、改行を勝手に足すことはしません。この種の差を確実に排除するには、テキストを貼り付けるのではなくファイルそのものを計算するのが最も確かです。
ブラウザの WebCrypto API は連続した 1 ブロックのデータしかダイジェストできず、分割してストリーム計算する手段が用意されていないため、ファイルをいったん丸ごとメモリに読み込む必要があります。50 MB は、スマートフォンでも詰まらない程度の上限です。それより大きなファイルには、OS に標準で入っているコマンドラインツールをお使いください。Windows なら certutil -hashfile ファイル名 SHA256、macOS と Linux なら shasum -a 256 ファイル名。
違いはありません。同じ 16 進文字列の二通りの書き方にすぎず、照合でも大文字小文字は区別されません。本ページの既定は小文字で、これは sha256sum、shasum といったコマンドラインツールの慣習に合わせたものです。チェックを入れると大文字に切り替わります。照合の際は大文字小文字の違いを自動的に無視するので、手作業で揃える必要はありません。
されません。計算にはブラウザ内蔵の WebCrypto API を使っており、ファイルはメモリに読み込まれ、計算されて表示されるだけで、1 バイトも端末の外へ出ません。ページの読み込みが終わったあとにネットワークを切ってもこのツールはそのまま動きます——それがいちばん手早い確認方法です。詳しくはプライバシーポリシー。