ブログ
日本語

ハッシュ値計算 — MD5・SHA-256・ファイルのチェックサム

テキストとファイルのMD5・SHAハッシュをブラウザー内で計算

ブラウザー内で処理・アップロード不要

ファイルのハッシュ

ここにファイルをドロップするか、選択してください。ファイルはアップロードされません。

  • MD5
  • SHA-1
  • SHA-256
  • SHA-384
  • SHA-512

MD5とSHA-1には既知の衝突攻撃があります。セキュリティ目的には使わないでください。

ハッシュ値計算ツールとは

ハッシュ関数は、どんなデータも固定長の「指紋」に変換します。同じ入力は常に同じ値になり、1文字でも変えるとまったく違う値になります。そのため、ファイルが変更されていないかの確認や、ダウンロードしたファイルと公開されたチェックサムとの照合に便利です。このツールは5つのアルゴリズムの結果を並べて表示します。

使い方

  1. テキストを入力または貼り付けると、ハッシュ値がすぐに更新されます。
  2. ファイルのハッシュを計算するには、ファイル欄にドロップするか「ファイルを選択」を押します。テキスト欄に入力するとテキストモードに戻ります。
  3. HexまたはBase64の出力を選びます。Hexは大文字にもできます。
  4. 公開されているチェックサムを照合するには、照合するハッシュ値 に貼り付けます。大文字・小文字は区別せず、区切られたチェックサム内の空白や改行は取り除きます。末尾のファイル名(sha256sum の出力など)、sha256: という接頭辞、BSD形式の SHA256 (file) = … にも対応しており、どのアルゴリズムと一致したかを表示します。コピーボタンでは他のどの値もコピーできます。

仕組み

  • テキストはまず UTF-8のバイト にエンコードします。ひらがな・漢字は1文字3バイト、ほとんどの絵文字は4バイトです。
  • SHA-1、SHA-256、SHA-384、SHA-512は、ブラウザーのWebCrypto API(crypto.subtle.digest)で計算します。
  • WebCryptoはMD5を提供していないため、オープンソースのspark-md5ライブラリで計算します。
  • Base64出力は、Hex文字列ではなくダイジェストの生のバイトをエンコードしたものです。
  • MD5とSHA-1は互換性と整合性チェックのためだけに用意しています。セキュリティ用途にはSHA-256以上を、パスワードには専用のアルゴリズムを使ってください。

例

入力 アルゴリズム 結果
abc MD5 900150983cd24fb0d6963f7d28e17f72
空文字列 MD5 d41d8cd98f00b204e9800998ecf8427e
abc SHA-256 ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
こんにちは SHA-256 125aeadf27b0459b8760c13a3d80912dfa8a81a68261906f60d87f4a0268646c

これらは標準のテストベクター、またはNode.jsのcryptoモジュールで照合した値です。

よくある質問

同じ日本語のテキストなのに、他のサイトとハッシュ値が違うのはなぜですか?

テキストをバイトに変換する方法が違うためです。このツールはUTF-8のバイトでハッシュを計算するので、「こんにちは」のMD5はc0e89a293bd36c7a768e4e9d2c5475a8です。UTF-16やShift_JISなど古いエンコーディングを使うツールでは別の値になります。

ファイルはアップロードされますか?

いいえ。ファイルはブラウザーのメモリに直接読み込まれ、そこで計算されます。メモリに読み込むため、200 MBを超えるファイルには対応していません。

パスワードをMD5やSHA-256のハッシュで保存してもいいですか?

安全ではありません。これらの関数は高速に動くよう設計されているため、総当たり攻撃のコストが低くなります。bcrypt、scrypt、Argon2のような意図的に遅いパスワードハッシュを使ってください。

MD5やSHA-1はまだ使えますか?

偶発的な破損の検出には使えます。しかしセキュリティに関わる用途には使えません。どちらにも実用的な衝突攻撃が知られています。

ほしいツールはありますか?