このツールの動作
文字列が入り、選んだ方式のハッシュ値が出ます。
hello
2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
既定は SHA-256、同じ選択肢に SHA-1 と SHA-512 が並びます。計算はブラウザーの Web Crypto の実装が行います。こちらでハッシュを実装してはいませんし、どこにも送りません。
生成、計算、変換──呼び名は違っても操作は一つ
SHA-256 ジェネレーター、計算機、コンバーター、ハッシュツール。呼び名はいくつもありますが、操作は一つです。テキストが入り、決まった長さのダイジェストが出る。SHA-256、SHA256、SHA-2 256、sha 256 という書き分けも、指しているアルゴリズムは一つで、綴りが動くだけです。
ダイジェストは小文字の16進数で出ます。SHA-256 なら64文字、SHA-1 なら40文字です。もっと短い base64 の文字列を見せる道具は、その16進数の背後にある32バイトの生データを符号化しています。16進数の文字列そのものを base64 に通すと、より長い別のものになります。
コマンド行と食い違うわけ
hello → 2cf24dba5fb0a30e…
hello\n → 5891b5b522d5df08…
echo hello | sha256sum が計算するのは下のほうです。echo が改行を足すからです。どちらの値も誤りではありません。別のバイト列のハッシュであり、その違いが目に見えなかったことを、ハッシュは告げられません。検査値と突き合わせるときは、まず改行を疑ってください。
もうひとつの食い違いは単位です。この入力欄が扱うのは文字列で、計算されるのはその UTF-8 のバイト列です。ファイルは初めからバイト列で、文字コードも改行の形も末尾の改行もその一部です。ですからファイルなら、ファイルそのものを計算してください。Unix なら sha256sum、Windows なら certutil -hashfile、PowerShell なら Get-FileHash です。
ハッシュでないもの
- 暗号化ではありません。 戻る道はありません。何を貼っても値の長さは同じで、元の文字列が入る余地の無いことがそれで分かります。
- パスワードの保管庫ではありません。 塩も反復も無く、わざと速く作られています。それには bcrypt、scrypt、Argon2 をサーバー側で。
- SHA-1 は、素性の知れない入力の身元にはなりません。 同じ SHA-1 値を持つ二つのファイルは作れます。SHA-256 でそれをする方法は、いまのところ誰も知りません。
どこで動くか
あなたのブラウザーの中、crypto.subtle.digest を通してです。ブラウザーが TLS に使っているのと同じ実装で、このページで書き直したものではありません。文字列はタブから出ません。そこが肝心です。ハッシュを取る価値のある文字列は、見知らぬ相手に送らないほうがよい文字列であることが多いのですから。
プライバシー
すべての処理はブラウザ内のJavaScriptだけで完結します。データがアップロードされることはないため、機密情報でも安心して利用でき、オフラインでも動作します。