ファイルを選択
  1. base64hub
  2. その他の基数
  3. 16進数を Base64 に変換

16進数を Base64 に変換:ハッシュや鍵に

16進数のバイト列を貼り付けると、同じバイト列を Base64 で表したものが得られます。64 桁の SHA-256 ダイジェストは 44 文字の Base64 になります。16進数をテキストとしてエンコードするのではなく、先にバイト列にデコードするからです。

無料 登録不要・制限なし ローカル アップロードなし 44 文字(SHA-256 ダイジェストの場合。88 ではない) 更新日 2026/10/27
入力 0バイト 0 B出力 0

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

16進数を Base64 に変換する方法

  1. 入力 · Hex(16進数) に16進数を貼り付けます。空白、改行、コロン、ハイフン、0x や \x の接頭辞は読み飛ばされ、大文字小文字も区別しません。
  2. 入力に合わせて 出力 · Base64 に Base64 が表示されます。
  3. 受信側がパディングなしの Base64 を求めるなら、出力の下の パディング(=) のチェックを外します。折り返した出力が必要なら 折り返し を 64(PEM)か 76(MIME)にします。
  4. 出力をコピー するか、Base64 → Hex の切り替えで逆方向から結果を確かめます。Base64 を16進数に変換 は、同じツールを逆向きにしたものです。

ハッシュのダイジェスト:16進数と Base64

ハッシュ関数が返すのは生のバイト列です。sha256sum や md5sum などのコマンドラインツールはそれを16進数で表示しますが、多くのプロトコルは同じダイジェストを Base64 で求めます。以下は 5 バイトの hello のダイジェストです。

ハッシュ16進数(sha256sum などの出力)Base64
MD55d41402abc4b2a76b9719d911017c592XUFAKrxLKna5cZ2REBfFkg==
SHA-1aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434dqvTGHdzF6KLavt4PO0gs2a6pQ00=
SHA-2562cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=

Base64 の形式を求める場面:

  • Subresource Integrity。 <script> や <link> タグの integrity="sha384-…" には Base64 のダイジェストが入ります。SRI ハッシュ生成ツール は、ファイルから属性全体を作ります。
  • Content-MD5 ヘッダー。 RFC 1864 は、この値を 16 バイトの MD5 ダイジェストの Base64 と定めています。これでアップロードを検証するオブジェクトストレージは、16進数の形式を拒否します。MD5 を Base64 で をご覧ください。
  • API リクエストの署名や HMAC:通常 Base64 で送られます。HMAC を Base64 で では、どちらの形式でも計算できます。
  • 鍵とシークレット:openssl rand -hex 32 が出力する 32 バイトの鍵は、多くの設定ファイルが求める 44 文字の Base64 値になります。

自分のテキストやファイルの SHA-256 なら、SHA-256 を Base64 で を使えば16進数を経由する必要がありません。

よくある失敗:16進数のテキストをエンコードする

echo -n 2cf24d…9824 | base64 はそれらしい結果を返しますが、間違いです。表している 32 バイトの代わりに 16進数の 64 個の ASCII 文字をエンコードしてしまい、MmNmMjRk で始まる 88 文字を返します。この値をデコードすると16進数のテキストに戻るので、署名や整合性チェックが失敗するまで誰も気づきません。先に16進数をデコードしてください。

echo -n 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 | xxd -r -p | base64
# LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=

printf hello | openssl dgst -sha256 -binary | base64
# same result, without going through hex at all

xxd -r -p はプレーンな16進数をバイト列に戻します。Vim に同梱されていて、最小構成のシステムでは xxd パッケージをインストールします。OpenSSL では、-binary を付けるとダイジェストが16進数ではなくバイト列で出力されます。

コードで16進数を Base64 に変換する

import base64
base64.b64encode(bytes.fromhex("5d41402abc4b2a76b9719d911017c592")).decode()
# 'XUFAKrxLKna5cZ2REBfFkg=='
Buffer.from("5d41402abc4b2a76b9719d911017c592", "hex").toString("base64");
// 'XUFAKrxLKna5cZ2REBfFkg=='

URLセーフやパディングなしのバリアントは Python と Node.js のページで解説しています。ダイジェストを URL や JWT に入れるなら、Base64 を Base64URL に変換 で結果を変換してください。

変換に失敗するとき

  • 「16進数の桁数が奇数です」。 1 バイトには 2 桁必要で、コピーのときに 1 桁失われています。入力の両端を確認してください。
  • 「予期しない文字」。 sha256: というラベルや、sha256sum がダイジェストの後に出力するファイル名など、16進数でないものが入力に含まれています。取り除いてください。表示 を押すとその位置に移動します。
  • 16進ダンプのオフセット。 00000010: 4865 6c6c の 00000010 はデータではなく位置ですが、有効な16進数なので変換されてしまいます。オフセットのない xxd -p の出力を使ってください。

よくある質問

SHA-256 の16進ハッシュを Base64 に変換するには?

16進数 64 桁を入力欄に貼り付けます。結果は = で終わる 44 文字で、たとえば 2cf24dba…9824 は LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ= になります。コマンドラインなら echo -n HEX | xxd -r -p | base64 です。

Base64 が本来の 2 倍の長さになるのはなぜですか?

16進数の文字列がテキストとしてエンコードされ、16進数の 1 桁ごとに 1 バイトになったからです。SHA-256 ダイジェストをそのように扱うと、44 文字ではなく 88 文字になります。先に16進数をバイト列にデコードしてください。このツールはそうしています。

16進数の文字列は何文字の Base64 になりますか?

16進数 2 桁で 1 バイト、3 バイトごとに Base64 の 4 文字になり、4 の倍数に切り上げられます。32 桁(MD5)は 24 文字、40 桁(SHA-1)は 28 文字、64 桁(SHA-256)は 44 文字、128 桁(SHA-512)は 88 文字です。

UUID を Base64 に変換できますか?

できます。ハイフン付きのまま貼り付けてください。123e4567-e89b-12d3-a456-426614174000 の 16 バイトは Ej5FZ+ibEtOkVkJmFBdAAA== になり、36 文字が 24 文字になります。