テキスト
テキストを入力するかファイルを選ぶと、ダイジェストがここに表示されます。
ダイジェストは Web Crypto でローカル計算されます。MD5 は安全でないため意図的に除外しています。 SHA-1 はレガシー互換のためだけに提供しており、セキュリティ判断に使ってはいけません。
テキストやファイルのSHA-256ハッシュを作る方法
Hash Generator は同じ入力に対して SHA-256・SHA-384・SHA-512・SHA-1 のダイジェストをまとめて計算します。プロジェクトがどのチェックサムを公開していても、道具を替えずに突き合わせられます。テキストは UTF-8 として読み、最大 64 MB のファイルはディスクから直接読み込み、いずれも Web Crypto API を使ってこのブラウザーのタブ内で計算するためアップロードは発生しません。ダイジェストは小文字の16進で並び、行ごとにコピーボタンが付きます。
4ステップで入力をハッシュする
- テキストかファイルかを選ぶ入力モードの選択でテキスト欄とファイル選択を切り替えます。テキストはハッシュの前に UTF-8 へ符号化され、これはコマンドライン道具の既定と同じなのでダイジェストが一致します。
- テキストを入れるかファイルを選ぶテキストを入力または貼り付けるか、最大 64 MB のファイルを選びます。ファイルはブラウザー内で読み込まれ、端末の外へ出ません。例を読み込むを押せば既知のサンプル文字列をハッシュして出力の形を確認できます。
- ダイジェストを読んでコピーする4つのアルゴリズムが小文字の16進で並びます。必要な行のボタンでコピーしてください。入力を変えて再計算している間は古いダイジェストに失効の印が付きコピーが止まるため、すでに置き換えたテキストのハッシュを貼ってしまうことがありません。
- 公開されたチェックサムと照合する渡されたチェックサムを生成値の隣に置いて一文字ずつ比べるか、公開値を検索欄に貼って確かめます。1文字でも違えばバイトが同一ではないという意味です。
Hash Generator の使いどころ
- ダウンロードを公開チェックサムと照合する落としたファイルを選んで SHA-256 の行を読み、インストーラーを実行する前にリリースページの値と一致するか確かめます。
- 2つのファイルが同一か確かめる順番にハッシュしてダイジェストを比べます。サイズを見たり中身を目で追ったりするより速く確実です。
- テスト用の固定値を用意する既知の文字列のダイジェストを作っておけば、単体テストが実行時に計算し直さず定数で表明できます。
- 旧来のシステムの出力を確かめる古い連携には今も SHA-1 を出すものがあります。そうした値を再現して確認するために SHA-1 の行があり、レガシーの表示が付いています。
Hash Generator のよくある質問
- テキストやファイルはサーバーへ送られますか?
- いいえ。ハッシュ計算は Web Crypto API を使ってこのブラウザーのタブ内で動きます。ファイルはローカルで読み込まれ、中身もダイジェストもどこへも送られません。
- ハッシュから元のテキストに戻せますか?
- できません。ダイジェストは一方向で、このページでも元に戻したり破ったりはできず、一般には誰にもできません。ただし短い入力やありふれた入力は候補を試して当てられるため、ハッシュだけで秘密を隠すことはできません。
- MD5を用意していないのはなぜですか?
- MD5 は現実的な衝突が知られており、異なる2つのファイルが同じダイジェストになり得ます。チェックサムとして出すと、もはや存在しない保証があるように見せてしまうため含めていません。代わりに SHA-256 を使ってください。
- SHA-1を使ってもよいですか?
- 自分の管理外の仕組みがすでに使っている場合だけです。ページ上で SHA-1 にはレガシー・衝突しやすいと表示しており、署名やダウンロードの検証といった新しい安全性の判断には使ってはいけません。
- パスワードの保存に使えますか?
- できません。パスワードの保存には bcrypt・scrypt・Argon2 のように意図的に遅くソルトを使うアルゴリズムが要りますが、ここでは提供していません。素の SHA-256 は大量攻撃にすぐ破られます。
- 扱えるファイルの大きさはどこまでですか?
- 64 MB までです。それを超えるとタブが固まる代わりに大きすぎると報告します。ハッシュするにはファイル全体をメモリーに載せる必要があるためです。
- 端末で出た値とダイジェストが違うのはなぜですか?
- 多くは末尾の改行です。コマンドライン道具はファイルのバイトをそのままハッシュするので、改行で終わるテキストファイルは同じ文字を改行なしで貼ったものと違う値になります。