Base64エンコード・デコードの完全解説:概念から実践まで

エンコード(更新: 2026年4月28日)

Base64とは?

Base64は、バイナリデータをASCIIテキストに変換する方式です。64種類の印字可能文字(A-Z、a-z、0-9、+、/)で任意のバイナリを表現します。

なぜBase64が必要か?

多くのシステムはテキストしか扱えず、バイナリをそのまま送れません。

  • 電子メール:SMTPは当初ASCIIテキストのみ
  • URL:バイナリをそのまま埋め込めない
  • JSON:画像データなどを直接入れられない
  • HTML/CSS:インライン画像はテキスト形式が必要

Base64はバイナリをテキスト化し、こうした制約を解消します。


Base64のエンコード原理

基本手順

  1. 入力を 3バイト(24ビット)ずつに分割
  2. 各24ビットを 4つの6ビットに分ける
  3. 各6ビット(0-63)をBase64文字に対応
  4. 3バイトに満たない末尾は = でパディング

エンコード表

文字 文字 文字 文字
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
... ... ... ... ... ... ... ...
25 Z 41 p 57 5 63 /

入力: "Hello" (ASCII: 72 101 108 108 111)

2進数: 01001000 01100101 01101100 01101100 01101111

6ビット分割: 010010 000110 010101 101100 011011 000110 1111(00)
             ↓      ↓      ↓      ↓      ↓      ↓      ↓
インデックス: 18     6      21     44     27     6      60
文字:        S      G      V      s      b      G      8=

結果: "SGVsbG8="

実用シーン

1. インライン画像(Data URL)

小さな画像をBase64でHTML/CSSに埋め込み、HTTPリクエストを減らす:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUg..." />
.icon {
  background-image: url(data:image/svg+xml;base64,PHN2Zy...);
}

注意:小さなアイコン(2KB未満)向け。大きな画像のインライン化はHTMLが肥大化します。

2. URLセーフなエンコード

標準Base64の +/ はURLで特別な意味を持ちます。URLセーフBase64では次のように置き換えます。

  • +-
  • /_
  • パディング = を省略
標準: a+b/c==
URLセーフ: a-b_c

Base64エンコード・デコード でURLセーフモードを選べます。

3. JWTトークン

JWT(JSON Web Token)の3部分はすべてBase64URLでエンコードされます。

Header.Payload.Signature
↑      ↑       ↑
Base64 Base64  HMAC

4. メール添付

MIMEメールの添付はBase64で送られます。

Content-Transfer-Encoding: base64

SGVsbG8gV29ybGQ=

5. 設定ファイルのシークレット

Kubernetesなどではバイナリ鍵をBase64で保存します。

apiVersion: v1
kind: Secret
data:
  password: cGFzc3dvcmQ=   # Base64エンコード

Base64の注意点

サイズが約33%増える

元: 3バイト → エンコード後: 4バイト (4/3 ≈ 1.33)
元のサイズ Base64後 増加率
1 KB 1.33 KB +33%
100 KB 133 KB +33%
1 MB 1.33 MB +33%

セキュリティの誤解

Base64は暗号化ではありません! 誰でもデコードできます。機密データの保護には使わないでください。

Base64("password") = "cGFzc3dvcmQ="
Base64Decode("cGFzc3dvcmQ=") = "password"  ← すぐ復元できる

本当の暗号化には AES暗号化国密SM4 を使ってください。


Base64の派生形式

Base32

32文字(A-Z、2-7)のみ、大文字。大文字小文字を区別しない環境(ファイル名など)向け。

Base58

ビットコイン界隈で設計。紛らわしい文字(0/O、1/I/l、+/)を除外し、手書きコピー向け。

Base85 / Ascii85

効率は高い(4バイト→5文字、約25%増)が、Base64ほど普及していません。


ToolsKuでBase64を使う

テキストのエンコード・デコード

  1. Base64ツール を開く
  2. テキストまたはBase64文字列を入力
  3. エンコードまたはデコードを選択
  4. 必要ならURLセーフモードをオン

画像をBase64に

画像→Base64 でData URLに変換できます。

一括処理

複数行をまとめて一度にエンコード・デコードできます。


よくある質問

デコード後に文字化けする?

元データがUTF-8テキストではない可能性があります。画像などのバイナリをテキストとして表示すると化けます。

URLでBase64が壊れる?

URLセーフ版(+//-/_に、=を省略)を使ってください。

Base64とHexの使い分けは?

  • Base64:増加約33%、転送向き
  • Hex:約100%増だが読みやすく、デバッグ向き

Hexツール でHexの変換もできます。


まとめ

Base64は開発者にとって必須の知識です。ToolsKuでは Base64Base32Base58HexURLエンコード に加え、本物の暗号化 AES国密SM4 などをブラウザ内で安全に利用できます。

#Base64#编码#解码#教程#开发者