100% ローカル — データがブラウザの外に出ることはありません

SHA-256ハッシュ生成|受け取った値と一致するか確かめられます

テキストを SHA-256、SHA-1、SHA-512 でハッシュ化します。同じテキストからは必ず同じ値が出るので、渡された値と突き合わせて一致を確かめられます。

高速 プライベート Cookieゼロ
アルゴリズム

Text 入力

Hash 出力

このツールの動作

文字列が入り、選んだ方式のハッシュ値が出ます。

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だけで完結します。データがアップロードされることはないため、機密情報でも安心して利用でき、オフラインでも動作します。

よくある質問

`sha256sum` と値が合わないのはなぜですか。
たいていは末尾の改行です。`echo hello` は四文字と改行を送るので、`sha256sum` は `hello\n` を計算して `5891b5b5…` を返します。ここに `hello` を貼れば `2cf24dba…` です。どちらも正しく、別のバイト列のハッシュというだけです。もうひとつよくある原因は、ファイルがバイト列であるのに対し、この入力欄は文字列を扱うことです。本物のファイルなら、Unix の `sha256sum` や Windows の `certutil -hashfile` がバイトのまま読みます。
パスワードの保存に使えますか。
いいえ。素のハッシュには塩も反復回数も無く、しかも速い。何十億通りも試す相手にとって、まさに好都合です。パスワードは bcrypt、scrypt、Argon2 に、サーバー側で、それらのライブラリーが管理するためにある費用の指定とともに預けてください。ハッシュが答えるのは「同じ文字列か」であって、「正しいパスワードか」ではありません。
SHA-1 はまだ使えますか。
素性の知れた入力どうしの検査値としてなら使えます。Git はいまもオブジェクトをその値で識別しています。ただし、同じ値を持つ二つのファイルを誰かが作れる場面では使えません。SHA-1 の衝突は2017年から公開されています。署名、他人から受け取ったファイルの重複判定、信頼を決めるものはすべて SHA-256 か SHA-512 を求めます。ここで SHA-256 が既定なのはそのためです。

関連ツール