ハッシュ生成ツール(SHA-256)
テキストを入力または貼り付けて、SHA-256、SHA-1、SHA-384、SHA-512のハッシュをワンクリックで計算します。結果は小文字または大文字の16進数で表示され、それぞれにコピーボタンが付いています。ハッシュ計算はブラウザのWeb Crypto APIを使い、テキストのUTF-8バイト列に対して行われるため、何もアップロードされません。無料で、登録は不要です。ハッシュ化できるのはテキストだけで、ファイルは対象外です。
ハッシュ生成ツールの使い方
- 1. テキストを入力します。 テキストボックスに入る範囲であれば、どんなテキストでも構いません。
- 2. 「ハッシュを生成」を押します。 4つのダイジェストがすべて同時に表示され、推奨のSHA-256が強調表示されます。
- 3. 大文字・小文字を選びます。 16進数を大文字に を選ぶと、すべてのダイジェストが小文字(一般的な慣例)と大文字の間で切り替わります。元のバイト列は同じです。
- 4. 必要なダイジェストをコピーします。 横のボタンでコピーします。
4つのアルゴリズム
SHA-1、SHA-256、SHA-384、SHA-512は、米国政府の安全なハッシュ標準(FIPS 180-4)で定義されています。いずれも、どんな入力からも固定長のダイジェストを作ります。出力で見分けられる違いはサイズだけです:
| アルゴリズム | ダイジェストのサイズ | 16進数の桁数 | 状態 |
|---|---|---|---|
| SHA-1 | 160ビット | 40 | セキュリティ的には破られています:最初の実用的な衝突は2017年に発表され、NISTは2030年までの段階的な廃止を求めています。レガシーなチェックサムのみ。 |
| SHA-256 | 256ビット | 64 | 整合性チェックと署名で標準的に使われる選択肢 |
| SHA-384 | 384ビット | 96 | SHA-2ファミリー。切り詰めたSHA-512 |
| SHA-512 | 512ビット | 128 | SHA-2ファミリー。64ビットプロセッサーではSHA-256より速いことが多い |
暗号学的ハッシュは一方向の指紋のようなものです。同じ入力からは常に同じダイジェストが得られ、わずかな変更でまったく無関係なダイジェストになり、ダイジェストから元のテキストを復元することはできません。Web Crypto APIはMD5を実装していないため、このツールではMD5を提供していません。
具体例
テキスト
abc
SHA-256
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
SHA-1
a9993e364706816aba3e25717850c26c9cd0d89d
これら2つは標準規格の例に掲載されている公式のテストベクターなので、信頼できる情報源と照らし合わせてツールを検証できます。次に、1文字の違いが何をもたらすか見てみましょう。The quick brown fox jumps over the lazy dog の「dog」を「cog」に変えると:
…dog
d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592
…cog
e4c4d8f3bf76b692de791a173e05321150f7a345b46484fe427f6acc7ecc81be
この2つのSHA-256ダイジェストには、見分けられる共通点がほとんどありません。256ビットのうち123ビットが異なっており、無関係な値で予想される約半分に近い数です。これがアバランシェ効果で、ファイルやメッセージが変わったことを、何が変わったかを明かさずに示せる理由です。
ハッシュが一致しない理由
- 末尾の改行。
abcと、abcに改行を加えたものは別の入力です。改行を加えたabcのSHA-256はba7816bfではなくedeaaff3で始まります。コマンドecho abc | sha256sumは改行も含めてハッシュ化するため、改行を含めないようにするにはprintfまたはecho -nを使ってください。 - 大文字・小文字と空白。
Abcはabcと異なるハッシュになり、文字列の両端にある空白も同様です。 - エンコーディング。 ツールは入力したテキストのUTF-8バイト列をハッシュ化します。UTF-16やLatin-1でハッシュ化された同じテキストは、非ASCII文字がある限り別のダイジェストになります。
- 改行コード。 Windowsのファイルから貼り付けたテキストには、テキストボックスが取り除く復帰文字(CR)が含まれている場合があります。
このツールに向かないこと
- ファイル。 テキストだけをハッシュ化します。ファイルの場合は、macOSやLinuxでは
shasum -a 256 file、Windowsではcertutil -hashfile file SHA256を使ってください。 - パスワード。 SHA-256は高速に計算できるように設計されているため、攻撃者によるパスワードの推測を助けてしまいます。パスワードは、Argon2id、scrypt、bcryptのような、低速でソルト付きのパスワードハッシュ関数で保存してください。
- 鍵付きハッシュ。 HMACやソルトのオプションはありません。
どのツールが必要ですか?
テキスト自体を16進数で見たい場合(ダイジェストではなく)は、16進数変換ツールを使ってください。ランダムな識別子はUUIDジェネレーター、ランダムなシークレットはパスワードジェネレーターを使います。
よくある質問
- 私のテキストはサーバーにアップロードされますか?
- いいえ。すべてのダイジェストは、Web Crypto API(crypto.subtle.digest)を使ってブラウザ内で計算されます。テキストはどこにも送信されず、ページを読み込んだ後にオフラインになってもツールは動作し続けます。
- 暗号学的ハッシュとは何ですか?
- 任意の長さの入力を固定長のダイジェストに変換する関数です。決定的で、一方向で、入力のすべてのビットに敏感です。ハッシュは、とりわけファイルの整合性チェック、デジタル署名、コミットIDに使われます。
- どのハッシュアルゴリズムを使うべきですか?
- ほとんどの用途ではSHA-256です。SHA-384とSHA-512は、同じファミリーでより長いダイジェストが必要な場合に使います。SHA-1は、古いシステムが必要とする場合に限って使い、セキュリティ目的には決して使わないでください。
- SHA-1は安全に使えますか?
- セキュリティ目的では安全ではありません。2017年のSHAttered攻撃では、同じSHA-1ダイジェストを持つ異なる2つのPDFファイルが作られました。NISTは2030年末までの段階的な廃止を求めています。攻撃者を想定しない非セキュリティ用途のチェックサムには、今も使えます。
- MD5のオプションがないのはなぜですか?
- Web Crypto APIはMD5を実装しておらず、このツールはブラウザが提供するものだけを使います。MD5は長年、セキュリティ用途には適さないとされてきました。
- このツールでファイルをハッシュ化できますか?
- いいえ。テキストのみを受け付けます。ファイルには、上で説明したとおり、OSのコマンドラインツールを使ってください。
- なぜ他のサイトのSHA-256と一致しないのですか?
- ほとんどの場合、入力に末尾の改行や空白などの目に見えない文字が含まれているか、テキストのエンコーディングが異なっています。16進数変換ツールで、正確なバイト列を確認してください。