コンテンツへスキップ

ハッシュを生成

テキストでも、どんなサイズのファイルでも、MD5・SHA-1・SHA-256・SHA-384・SHA-512を計算します。ダウンロードしたファイルが公開されているチェックサムと一致するかの確認に便利です。データは保存されません。

  • 保存しません
  • 順番待ちなし
  • 登録不要・透かしなし

テキストはUTF-8としてハッシュ化されます。ダウンロードしたファイルを検証するには、ファイルをドロップしてください。

使い方

1

テキストを貼り付けるかファイルをドロップ

テキストはUTF-8としてハッシュ化されます。ファイルはここで読み込んでハッシュ化し、保存されることはありません。

2

すべてのハッシュを一度に確認

5つのアルゴリズムをまとめて計算するので、どれが必要かを事前に知っておく必要はありません。

3

期待される値と比較

受け取ったチェックサムを貼り付けると、自動で照合します。目で1文字ずつ比べるのはミスのもとです。

ハッシュが証明するもの、しないもの

ハッシュとは、どんな量のデータからも作られる固定長の指紋で、正確に述べておく価値のある性質が2つあります。1つは一方向性です。ハッシュをデータに戻す操作は存在しません。情報のほとんどが失われているからです。もう1つは敏感さです。入力を1ビット変えるだけで、出力のビットのおよそ半分が変わります。だからこそ、ダウンロードしたファイルが壊れていないことや、2つのファイルが同じであることを、1バイトずつ比べずに確認するのに役立ちます。

MD5とSHA-1は破られていますが、理由があってここに置いています。 どちらにも実用的な衝突攻撃があります。MD5は2004年から、SHA-1は2017年に実在する2つのPDFで実証されました。つまり、同じハッシュを持つ異なる2つのファイルを作れるということです。そのため、どちらも悪意のある相手に対しては何も証明できません。それでも偶発的な破損を検出するには十分に使え、実際のソフトウェアの多くが今もMD5のチェックサムを公開しているので、ダウンロードしたファイルをそれと照合するのは正当な用途です。誰かがあなたをだまそうとしている可能性がある場面では、SHA-256を使ってください。

これらのどれでもパスワードをハッシュ化してはいけません。 このページで最も重大な点です。ハッシュは高速になるよう設計されていますが、パスワードにとって高速であることはまさに間違いです。最新のグラフィックカードは1秒間に数十億回のSHA-256を計算できるため、盗まれたパスワードハッシュのデータベースは数時間で解読されます。パスワードの保存には、ユーザーごとのソルトを使う意図的に遅い関数が必要です。argon2、bcrypt、scrypt は、あえて時間とメモリを消費するように作られています。パスワードをそのままSHA-256にしたものは、データベースの列でどう見えようと、保護ではなく脆弱性です。

自分で計算したハッシュを、ダウンロード元と同じページに掲載されたハッシュと比べても、見た目ほどの証明にはなりません。ファイルを差し替えられる人なら、その横の数値も差し替えられるからです。チェックサムが最も価値を持つのは、別の場所から得たときです。署名付きのリリース、別の経路、以前に自分で記録しておいた値などです。

ほかの目的には

コマンドラインならコマンド1つです。macOSとLinuxでは shasum -a 256 file、Windowsでは certutil -hashfile file SHA256、古いチェックサムが公開されている場合は md5sum や sha1sum を使います。これらはファイルを読み込むのではなくストリーム処理するため、サイズの上限がありません。数百MBを超えるものではこれが本当の違いになり、ファイル全体をメモリに保持するページは単に失敗します。

リリースが壊れていないだけでなく本物であることを確かめるには、ハッシュ単体では適したツールではありません。GPG署名(gpg --verify file.sig file)は、誰がファイルを作ったかを証明します。チェックサムには答えられない問いです。本格的なプロジェクトの多くは両方を公開しており、重要なのは署名のほうです。

よくある質問

ファイルはどこかに保存されますか?

いいえ。ファイルは、HTTPSを処理しているのと同じブラウザ内蔵の暗号機能でハッシュ化されます。何も保存されないため、サイズの上限も接続の待ち時間もありません。

サイズの上限はありますか?

固定のサイズ上限ではなく、使用可能なメモリ次第です。ブラウザの暗号機能にはファイルを分割してハッシュ化する方法がなく、ファイル全体を一度にメモリに置く必要があります。そのため、非常に大きなファイル(たとえばDVDのイメージ)は、それを保持できないマシンでは失敗することがあります。数百MBまでのファイルなら、普通のパソコンで問題ありません。大きなファイルが失敗した場合はその上限に達したということで、ページは固まらずにそう表示します。

どのハッシュを使えばよいですか?

新しく使うならSHA-256です。現在の標準で、ソフトウェアのチェックサム、コンテナのダイジェスト、ブロックチェーンのシステムで使われており、既知の弱点はありません。MD5やSHA-1は、ほかの何かがそれを必要とする場合に限って使ってください。古い公開チェックサムとの照合、レガシーシステム、あるいはオブジェクトをSHA-1で識別するGitなどです。より長いダイジェストが特に必要ならSHA-512を使ってください。64ビットのマシンでは、SHA-256より遅いどころか速いこともよくあります。

パスワードのハッシュ化に使えますか?

できますが、その結果を保存してはいけません。この分野で最もよくある間違いなので、率直に言います。MD5、SHA-1、SHA-256はどれもパスワードには不適切で、SHA-256が暗号として強いことは助けになりません。問題は、これらの関数が設計上「高速」であることです。最新のグラフィックカードは1秒間に数十億回のSHA-256を計算できるため、盗まれたSHA-256のパスワードハッシュのデータベースは猛烈な速さで解読されます。パスワードには、そのために作られた、意図的に遅くソルトを使う関数が必要です。bcrypt、scrypt、Argon2です。本格的なフレームワークにはどれも組み込まれています。

なぜMD5に「脆弱」と表示されるのですか?

今では誰でも、普通のハードウェアで数秒のうちに、同じMD5ハッシュを持つ異なる2つのファイルを作れるからです。2004年からそうであり、実際に問題を引き起こす形で実証されています。異なる契約書を表示する2つのPDF、片方がマルウェアである2つの実行ファイルなどです。そのためMD5では、ファイルが期待どおりのものであることを証明できません。意図的な偽造でも一致させられるからです。それでも、ダウンロードの失敗やコピーの途中切れのような偶発的な破損の検出には十分に使えます。公開されているMD5チェックサムの多くは、実際にはそのためのものです。セキュリティ用途には決して使ってはいけません。

なぜSHA-1に「脆弱」と表示されるのですか?

同じ理由で、より最近のことです。2017年にGoogleとCWIが同じSHA-1ハッシュを持つ異なる2つのPDFを作成し、2020年には署名を偽造できるほど攻撃が安価になりました。ブラウザは何年も前にSHA-1の証明書を受け付けなくなり、GitもSHA-1からの移行を進めています。今アルゴリズムを選ぶなら、SHA-256を選んでください。

ダウンロードしたファイルはどう検証すればよいですか?

ダウンロードしたファイルをドロップし、入手元のサイトに掲載されているチェックサムを比較欄に貼り付けます。一致すれば、ファイルは壊れずに届いており、公開されたとおりのファイルです。一致しなければ、削除してもう一度ダウンロードしてください。注意点が2つあります。チェックサムは、ファイルを入手した場所ではなく公式の配布元から取得してください。そして、チェックサムが証明するのはファイルがそのページで公開された内容と一致することだけです。ページ自体が改ざんされていれば、両方とも一致してしまいます。

ハッシュは正しく計算されていますか?

SHA-1、SHA-256、SHA-384、SHA-512は、HTTPSを処理しているのと同じコードである、ブラウザ自体のWeb Crypto実装で計算しています。MD5はWeb Cryptoにはありません。破られているため意図的に外されているのです。そこでRFC 1321に基づいてここで直接実装し、その文書自体に掲載されているテストベクターで確認しています。

ご注意: MD5とSHA-1を用意しているのは、実際のファイルや古いシステムで今も使われているからで、安全だからではありません。どちらもセキュリティ用途には破られており、チェックサムとしてしか役に立ちません。Web Cryptoには逐次的なダイジェスト計算がないため、ファイル全体をメモリに保持します。非常に大きなファイルは、ストリーム処理されずに失敗します。

このツールをあなたのサイトに設置

ブログ、授業のページ、ヘルプ記事などに無料で設置できます。コードを1つ貼り付けるだけで、訪問者がそのページ上でツールを使えるようになります。