MD5とSHA-1はパスワードには安全ではないため、保存にはbcrypt、scrypt、Argon2を使ってください。
SHA-256はソフトウェア配布、ビットコイン、TLS証明書で標準的に使われるハッシュで、256ビット(16進数64文字)です。abc のSHA-256はFIPS 180-4のテストベクトルどおり ba7816bf 8f01cfea 414140de 5dae2223 b00361a3 96177a9c b410ff61 f20015ad。ファイルをドロップしてsha256sumの出力と照合できます。
使い方
- テキストを入力または貼り付けると、すべてのハッシュ値がリアルタイムで更新されます。
- 「ファイル」に切り替えて、サイズを問わず1つ以上のファイルをドロップ。進捗バー付きで分割して読み込みます。
- ハッシュ値をタップするとコピーできます。「大文字」や「Base64」で出力形式を切り替えられます。
- 「HMAC」をオンにして秘密鍵を入力すると、通常のハッシュの代わりにHMACを計算します。
- 「照合」に期待するハッシュ値を貼り付けると、一致する行が強調表示されます。一致しない場合はその旨が表示されます。
- 計算はWebAssemblyでブラウザ内で行われます。テキスト・ファイル・鍵が送信されることはありません。
- テキストは入力したとおりのUTF-8バイト列(空白・改行を含む)としてハッシュ化されます。
- MD5とSHA-1はチェックサム用途には使えますが、安全性はありません。機密用途にはSHA-256、SHA-3、BLAKE3を、パスワード保存にはbcryptやArgon2を使ってください。
- HMACはMD5、SHA-1、SHA-2、SHA-3で使えます。HMACがオンの間、BLAKE2b・BLAKE3・CRC32は非表示になります。
- 照合は大文字・小文字と空白を区別せず、Base64の値にも対応しています。
ハッシュの用途
暗号学的ハッシュ関数は、どんな入力でも決まった長さの「指紋」に変換します。同じバイト列からは必ず同じ値が出て、1ビット変わるだけで出力のおよそ半分のビットが変わります。たとえば hello のSHA-256は 2cf24dba 5fb0a30e 26e83b2a c5b9e29e 1b161e5c 1fa7425e 73043362 938b9824(読みやすいよう空白で区切っています) で、先頭を大文字の Hello にするとまったく別の値になります。
主な用途は、公開チェックサムとの照合によるダウンロードの検証、重複ファイルの検出、Gitのような内容ベースの保存、HMACによるAPIリクエストの署名です。テキストは入力どおりのUTF-8バイト列としてハッシュするため、末尾の空白やWindowsの改行コードでも結果が変わります。
アルゴリズムの選び方
MD5(128ビット)とSHA-1(160ビット)には実用的な衝突攻撃が知られており、偶発的な破損の検出には使えても、セキュリティ用途には向きません。チェックサムや署名にはSHA-256・SHA-512(FIPS 180-4)が標準的で安全な選択です。SHA-3(FIPS 202)はSHA-2とは別の設計で、予備として位置づけられています。BLAKE3は大きなファイルで特に速い新しいハッシュです。CRC32はZIPやPNG、イーサネットで使われる32ビットの誤り検出符号で、伝送エラーは見つけられますが簡単に偽造できます。
ハッシュは暗号化ではない
ハッシュ値から元のデータを復号することはできません。ただし短い入力やよく使われる文字列は総当たりで見つかるため、パスワードの保存には素のSHA-256ではなく、Argon2・scrypt・bcryptのようなソルト付きの低速な関数を使います。HMAC(RFC 2104)は秘密鍵をハッシュに組み込む方式で、鍵を持つ人だけが署名を作成・検証できます。
よくある質問
ファイルのハッシュ値(チェックサム)はどう確認しますか?
「ファイル」に切り替えてダウンロードしたファイルをドロップし、配布元のチェックサムを「照合」欄に貼り付けます。一致したアルゴリズムの行が強調表示され、どれも一致しなければファイルが異なるか破損しています。
ハッシュは元に戻したり復号したりできますか?
できません。ハッシュは一方向関数です。よくあるパスワードのような短い入力は大量に試せば見つかることがありますが、ハッシュ値を元のデータに戻す鍵は存在しません。
MD5はまだ安全に使えますか?
セキュリティが関係しない用途、たとえば偶発的な変更や重複ファイルの検出に限られます。同じMD5を持つ別のファイルを意図的に作れるため、署名や改ざん対策にはSHA-256以上を使ってください。
SHA-256とSHA-512の違いは?
SHA-256は256ビット(16進数64文字)、SHA-512は512ビット(128文字)を出力します。どちらもSHA-2ファミリーで安全とされ、64ビットCPUではSHA-512のほうが速いこともあります。
ハッシュ計算のためにファイルがアップロードされますか?
されません。ファイルはブラウザ内で少しずつ読み込まれ、WebAssemblyで計算されます。数GBのファイルでも端末の外には出ません。
プログラムで計算したハッシュと一致しないのはなぜですか?
多くの場合、入力のバイト列が違っています。余分な改行、文字コードの違い、16進数とBase64の取り違えなどです。末尾の空白や改行コードを確認し、同じ形式で比べてください。