Base64はどこに隠れている?メール添付からJWT Tokenまで、毎日使っているのに知らないエンコード技術

ブラウザの開発者ツールを開いて任意のサイトのネットワークリクエストを見ると、ほぼ必ずBase64の長い文字列が見つかります——AuthorizationヘッダーのBearer token、CSSのdata URL、APIが返す画像フィールドなど。Base64はあらゆる場所にあります。

1. Base64とは?「なぜ必要か」から理解する

SMTP、HTTP/1.1などの初期プロトコルはプレーンテキスト(ASCII)の転送のみを想定していました。画像やPDFなどのバイナリデータを送るには、何らかの変換が必要です。Base64は3バイト(24ビット)のバイナリデータを4つの6ビット数値に再グループ化し、64文字のアルファベット(A–Z、a–z、0–9、+、/)で表現します。結果:あらゆるバイナリデータをテキスト文字で表現できます

特性説明
文字セットA–Z(26)、a–z(26)、0–9(10)、+、/、計64文字
パディング文字=、3の倍数に揃えるため
サイズ増加元のデータより約33%大きくなる
実際に試してみる:Base64エンコード/デコードツールで任意のテキストやデータをエンコード、またはBase64文字列をデコードできます。

2. メール添付ファイルの中のBase64(MIME)

SMTPプロトコルはもともと7ビットASCIIテキストのみをサポートしていました。添付ファイルの送信にはMIME規格が必要で、MIME添付ファイルは通常Base64でエンコードされています。「メールの原文を表示」すると見える長い文字列は、Base64エンコードされたファイル内容です。

3. JWT Token:ログインシステムで最も一般的なBase64

JWTは.で区切られた3つのBase64url部分で構成されています。最初の2つをデコードすると:

ヘッダー: {"alg":"HS256","typ":"JWT"}
ペイロード: {"sub":"user123","exp":1748000000}

重要:JWTの最初の2つの部分は暗号化されておらず、誰でもデコードして読めます。3番目の署名部分のみが改ざん検出に使用されます。JWTにパスワードや機密データを入れてはいけません。

JWTをデコード:JWTの第1または第2部分をBase64デコードツールに貼り付けると、JSON内容を直接確認できます。JSONフォーマッターで構造をより明確に読むこともできます。

4. Data URL:HTML/CSSに埋め込まれた画像

Data URLを使うと、ファイル全体をHTMLやCSSに直接埋め込むことができ、追加のHTTPリクエストが不要になります:

<img src="data:image/png;base64,iVBORw0KGgo...">

5. Base64に関するよくある誤解

  • Base64は暗号化ではありません:エンコーディングです。鍵なしで誰でも即座にデコードできます
  • Base64はデータを圧縮しません:むしろ約33%増加します
  • 末尾の=はアライメントパディングであり、暗号化記号ではありません
  • URLではBase64url変体を使用+/の代わりに-_
URLのエンコード処理:URLエンコード/デコードツールでURL内の特殊文字を変換できます。

まとめ

  • Base64はバイナリデータを64のテキスト文字に変換し、テキストのみのプロトコルで転送可能にする
  • メール添付(MIME)、JWT Token、Data URL、Basic Authが最も一般的な用途
  • JWTのヘッダーとペイロードはBase64urlエンコードのみ——暗号化なし
  • Base64は暗号化ではなく、データサイズは33%増加する