ハッシュ生成ツール
テキストを入力するかファイルを選ぶと、MD5、SHA-1、SHA-256、SHA-384、SHA-512のハッシュ値が並んで表示され、それぞれにコピーボタンが付きます。ハッシュ計算はブラウザのWeb Crypto APIとローカルのMD5処理によってお使いの端末上で行われるため、ファイルがアップロードされることはありません。
0 文字 · 0 語 · 0 行
- MD5セキュリティ用途には不可
- —
- SHA-1セキュリティ用途には不可
- —
- SHA-256
- —
- SHA-384
- —
- SHA-512
- —
0 文字 · 0 語 · 0 行
すべてこのブラウザのタブ内で処理されます。テキストがアップロードされたり保存されたりすることはありません。
ダイジェストのサイズ
長さと空入力のダイジェストは、ページのビルド時にこのページ自身の MD5 と Web Crypto API で算出しました。
| アルゴリズム | ダイジェストのビット数 | 16進の長さ | ブロックのビット数 | 状態 | 空入力のハッシュ |
|---|---|---|---|---|---|
| MD5 | 128 | 32 | 512 | 破られています:2004年に衝突が発見 | d41d8cd98f00b204e9800998ecf8427e |
| SHA-1 | 160 | 40 | 512 | 破られています:2017年に衝突が実証 | da39a3ee5e6b4b0d3255bfef95601890afd80709 |
| SHA-256 | 256 | 64 | 512 | 安全(SHA-2) | e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 |
| SHA-384 | 384 | 96 | 1024 | 安全(SHA-2) | 38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b |
| SHA-512 | 512 | 128 | 1024 | 安全(SHA-2) | cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e |
5つのアルゴリズムと、そのうち非推奨になった2つ
ハッシュ関数は、どんなサイズの入力でも固定長の「指紋」に変換します。1文字変えるだけで出力ビットのおよそ半分が反転するため、「UltKit」と「ultkit」でも全く無関係なダイジェストになります。MD5は1992年にRon RivestがRFC 1321で公開した方式で、128ビット(16進数32文字)を出力します。2004年にXiaoyun Wangらが、同じMD5ハッシュになる異なる2つの入力を作る方法を示し、2012年にはFlameマルウェアがMD5の衝突を悪用してMicrosoftのコード署名証明書を偽造しました。SHA-1(160ビット)も、2017年にGoogleとCWI Amsterdamが最初の実際の衝突「SHAttered」を公開し、同じ道をたどりました。この2つはここでは「セキュリティ用途には不向き」と表示しています。
SHA-256、SHA-384、SHA-512はNISTがFIPS 180-4で規定したSHA-2ファミリーに属し、現時点で実用的な攻撃は知られていません。SHA-256は、ソフトウェアのダウンロード、Gitの新しいオブジェクト形式、TLS証明書、Bitcoinなどで標準的に使われています。MD5とSHA-1は、偶発的な破損の検出やファイルの重複排除など、悪意ある攻撃者を想定しない用途なら今でも問題なく使えます。多くのダウンロードページが今も両方を掲載しているのはそのためです。
ハッシュ化が暗号化ではない理由
暗号化は、鍵を持つ人が元のデータを取り戻せるよう、元に戻せる仕組みになっています。一方、ハッシュには鍵がなく、1つのダイジェストに対応する入力が無数にあるため元に戻せません。だからといって、ハッシュが秘密を守る安全な入れ物になるわけではありません。短い入力やありふれた入力のSHA-256を見た攻撃者は、候補をハッシュして一致するものを探すだけで済み、既知の数十億件のパスワードを網羅した事前計算テーブルも存在します。高速ハッシュは速さを目的に作られており、最近のGPUは1秒間に数十億回のSHA-256を試せます。
パスワードの保存には、MD5やSHA-256をそのまま使わず、Argon2、bcrypt、scryptのような、意図的に低速でソルト付きのパスワード用ハッシュを使ってください。パスワード自体はパスワード生成で作成できます。このページは高速ハッシュが得意な用途に使います。たとえば、ダウンロードしたファイルが配布元の記載するチェックサムと一致するかの確認、2つのファイルを開かずに比較すること、自分のコードが計算したダイジェストの確認です。テキストは末尾に改行を付けないUTF-8としてハッシュします。ターミナルで echo "text" | sha256sum と実行した結果と違う場合、たいていこれが原因です。開発者ツールのハブでは、ハッシュと元に戻せるエンコードを同じサンプルで比較できます。
よくある質問
- ダウンロードしたファイルをSHA-256チェックサムで検証するには?
- 「ファイルのハッシュ」でファイルを選び、SHA-256の行を配布元サイトの値と照合してください。すべての文字が一致する必要があります。16進数を大文字にしても、a~fの表示が変わるだけです。
- MD5やSHA-256のハッシュは復号できますか?
- いいえ、復号するものがありません。ハッシュを元に戻せると謳うサイトは、過去にハッシュ化された文字列の表からダイジェストを検索しているだけで、短い入力やありふれた入力にしか通用しません。
- MD5は破られているのに、なぜ今も使えるのですか?
- 今でも多くのシステムがMD5チェックサムを公開しており、偶発的な変更の検出には十分です。破られているのは、衝突するファイルを意図的に作れる攻撃者に対してだけです。
- 空文字列のMD5ハッシュ値は何ですか?
- d41d8cd98f00b204e9800998ecf8427e です。この値が出た場合は、通常プログラムが何もハッシュしていません。たとえば、ハッシュの実行前にファイルの読み込みに失敗したケースです。
- SHA-512はSHA-256より安全ですか?
- どちらも破られておらず、総当たりでは到底解読できません。SHA-512は出力が長く、64ビットプロセッサでは速いこともありますが、チェックサムや署名ではSHA-256のほうが広く想定されています。