ファイルを選択
  1. base64hub
  2. 鍵とハッシュ
  3. SHA-256 ハッシュ(Base64)

SHA-256 を Base64 に

テキストを入力するかファイルをドロップすると、SHA-256 ダイジェストを Base64(44 文字)、Base64URL、16進数で一度に表示します。どの形式でも中身は同じ 32 バイトなので、使うシステムが求める形式を選んでください。

無料 登録不要・制限なし ローカル アップロードなし ファイル 200 MB 超は SHA-256 をストリーム処理 更新日 2026/10/27

ブラウザ内で処理されます。このページがデータをどこかに送信することはできません – その根拠

SHA-256 ハッシュを Base64 で得る方法

  1. アルゴリズム では SHA-256 が選択されています。ほかのボタンで MD5、SHA-1、SHA-384、SHA-512 に切り替えられます。
  2. 入力 を テキスト にした状態で、テキスト 欄に入力するか貼り付けます。そのテキストをどう読むかは 入力の形式 で決まります。UTF-8 テキストとして読むほか、すでにエンコードされた形で手元にあるバイナリデータをハッシュしたい場合は、16進数や Base64 のバイト列として読むこともできます。
  3. 結果を Hex、Base64、Base64URL のいずれかでコピーします。すべてのアルゴリズム には、同じ入力に対するすべてのダイジェストが並びます。
  4. ファイルをハッシュするには、入力 を ファイル に切り替えて 1 つまたは複数のファイルをドロップします。ファイルごとに結果が表示されます。200 MB を超えると SHA-256 と MD5 は 8 MB 単位のチャンクで計算され、進捗が表示されるので、大きなファイルを一度にメモリに載せる必要はありません。

ハッシュは入力に合わせて更新されます。上部の HMAC と SRI で、鍵付きハッシュとサブリソース完全性(SRI)タグに切り替えられます。

ハッシュの例

入力SHA-256(16進数)SHA-256(Base64)
空文字列e3b0c442…7852b85547DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=
hello2cf24dba…938b9824LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=
hello + 改行5891b5b5…46f6be03WJG1tSLV3whtD/CxEPvZ0hu0/HFjrzTQgoai6Eb2vgM=
The quick brown fox jumps over the lazy dogd7a8fbb3…37c9e59216j7swfXgJRpypq8sAguT41WUeRtPNt2LQLQvzfJ5ZI=

2 行目と 3 行目が、不一致のほとんどの原因になる落とし穴です。目に見えない改行 1 つで、ハッシュはまったく別物になります。また、ブラウザのテキストボックスに貼り付けたテキストは改行が LF に変換されるので、CRLF 改行のファイルは中身を貼り付けるのではなく、ファイルそのものをドロップしてください。

Base64 の SHA-256 が使われる場面

ダイジェストは伝統的に16進数で表示されますが、短く済むため Base64 を使う形式も多くあります。

  • Content Security Policy のハッシュ(インラインスクリプト用):script-src 'sha256-…'。
  • サブリソース完全性(SRI):integrity="sha256-…"。ただしこちらでは SHA-384 のほうが一般的です。
  • HTTP の Content-Digest(RFC 9530):本文 {"hello": "world"} に対しては Content-Digest: sha-256=:X48E9qOokqqrvdts8nOJRJN3OWDUoyWxBf7kbu9DBPE=: となります。コロンは、構造化ヘッダーでバイナリ値を表す記号です。
  • クラウドストレージのチェックサム:たとえば Amazon S3 の x-amz-checksum-sha256 ヘッダーは、Base64 のダイジェストを運びます。
  • ロックファイルとパッケージマネージャー:package-lock.json の integrity フィールド(通常は sha512-…)や、Nix の SRI 形式のハッシュです。

Docker や OCI イメージのダイジェスト(sha256:…)と Git は16進数を使います。システム間で比較する必要がある場合は、ハッシュを計算し直すのではなく、16進数から Base64 や Base64 から16進数 で変換してください。

コードとコマンドラインでの SHA-256 Base64

printf 'hello' | openssl dgst -sha256 -binary | base64
sha256sum file.bin | cut -d' ' -f1 | xxd -r -p | base64

-binary を付けないと、OpenSSL は16進数のテキストを出力し、そのテキストを Base64 にすると 88 文字の意味のない文字列になります。

import base64, hashlib

digest = hashlib.sha256(b"hello").digest()
print(base64.b64encode(digest).decode())

Node.js では、crypto.createHash("sha256").update("hello").digest("base64") が同じ LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ= を返し、"base64url" を指定すれば URLセーフ形式になります。単なるハッシュは署名ではありません。誰でも計算し直せます。メッセージが鍵を持つ人から送られたことを証明するには HMAC を使ってください。詳しくは Python での Base64 と OpenSSL を参照してください。

よくある質問

SHA-256 の結果がコマンドラインと一致しないのはなぜですか?

ほとんどの場合、末尾の改行が原因です。echo hello は hello に \n を加えた 6 バイトを出力するので、hello のハッシュとは異なります。シェルでは printf 'hello' か echo -n hello を使うか、ファイルをここにドロップして比較してください。

SHA-256 ハッシュは Base64 で何文字ですか?

44 文字で、末尾に = が 1 つ付きます。パディングなしの Base64URL なら 43 文字、16進数なら 64 文字です。88 文字になった場合は、生のダイジェストではなく16進数のテキストを Base64 エンコードしています。

SHA-256 の16進数文字列を Base64 に変換できますか?

はい。ダイジェストのバイト列は同じです。64 桁の16進数を 16進数から Base64 に貼り付けるか、シェルで16進数を xxd -r -p に通して base64 にパイプしてください。

SHA-256 を元のテキストにデコードできますか?

できません。ハッシュは一方向の指紋なので、デコードするものがありません。Base64 をデコードしても得られるのは 32 バイトのダイジェストだけです。エンコードとの違いは Base64 は暗号化ではない を参照してください。