メインコンテンツまでスキップ

RFC 4648 - Base16、Base32、Base64データエンコーディング

発行日: 2006年10月
ステータス: 標準化過程プロトコル (Standards Track)
著者: S. Josefsson (SJD)
廃止: RFC 3548


概要 (Abstract)

本文書は、一般的に使用されるBase64、Base32、Base16エンコーディング方式について説明します。また、エンコードされたデータにおける改行の使用、エンコードされたデータにおけるパディングの使用、エンコードされたデータにおける非アルファベット文字の使用、異なるエンコーディングアルファベットの使用、および正規エンコーディングについても議論します。


本メモのステータス (Status of This Memo)

本文書は、インターネットコミュニティのためのインターネット標準化過程プロトコルを規定し、改善のための議論と提案を求めています。本プロトコルの標準化状態とステータスについては、"Internet Official Protocol Standards" (STD 1) の最新版を参照してください。本メモの配布は無制限です。


Copyright (C) The Internet Society (2006).


目次 (Contents)

主要セクション


Baseエンコーディングが重要な理由

Baseエンコーディングはインターネットデータ転送の基礎です。バイナリデータをテキスト形式に変換し、テキストのみをサポートする環境での転送と保存を可能にします。

主な用途

エンコーディング主な目的典型的なアプリケーション
Base64汎用バイナリエンコーディングMIME電子メール添付ファイル、JWTトークン、データURI
Base64URLURL安全なエンコーディングJWT、OAuthトークン、URLパラメータ
Base32人間が読みやすいエンコーディングTOTPキー、Crockfordエンコーディング
Base1616進エンコーディングハッシュ値の表示、デバッグ出力

Base64クイックリファレンス

標準Base64エンコーディング

文字セット: A-Z, a-z, 0-9, +, /
パディング文字: =
出力長: 入力バイト数 × 4/3 (4の倍数に切り上げ)

例:
入力: "Hello"
出力: "SGVsbG8="

エンコーディングプロセス:
H e l l o
01001000 01100101 01101100 01101100 01101111
↓ 6ビットでグループ化
010010 000110 010101 101100 011011 000110 1111
↓ テーブル参照
S G V s b G 8=

Base64URLエンコーディング (RFC 4648 §5)

文字セット: A-Z, a-z, 0-9, -, _
パディング文字: = (通常省略)

標準Base64との違い:
+ → -
/ → _

用途: JWT、OAuthトークン、URLパラメータ

Baseエンコーディング参照テーブル

Base64標準文字テーブル

値  文字  値  文字  値  文字  値  文字
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 l 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 n 55 3
8 I 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /

パディング文字: =

実際のアプリケーション

JWT (JSON Web Token)

JWT構造:
header.payload.signature

各部分はBase64URLエンコードされています:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIn0.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

データURI

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

MIME電子メール添付ファイル

Content-Type: application/pdf
Content-Transfer-Encoding: base64

JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PC9UeXBlIC9DYXRhbG9n...

関連RFC

  • RFC 2045 - MIME Part One (MIMEのためのBase64を定義)
  • RFC 3548 - Base Encodings (RFC 4648によって廃止)
  • RFC 7515 - JSON Web Signature (Base64URLを使用)
  • RFC 7519 - JSON Web Token (Base64URLを使用)