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 Notice)
Copyright (C) The Internet Society (2006).
目次 (Contents)
主要セクション
- 1. Introduction (はじめに)
- 2. Conventions Used in This Document (本文書で使用される規約)
- 3. Implementation Discrepancies (実装の相違)
- 3.1 エンコードされたデータにおける改行
- 3.2 エンコードされたデータのパディング
- 3.3 エンコードされたデータにおける非アルファベット文字の解釈
- 3.4 アルファベットの選択
- 3.5 正規エンコーディング
- 4. Base 64 Encoding (Base64エンコーディング)
- 5. Base 64 Encoding with URL and Filename Safe Alphabet (URLおよびファイル名安全なBase64エンコーディング)
- 6. Base 32 Encoding (Base32エンコーディング)
- 7. Base 32 Encoding with Extended Hex Alphabet (拡張16進アルファベットのBase32エンコーディング)
- 8. Base 16 Encoding (Base16エンコーディング)
- 9. Illustrations and Examples (図解と例)
- 10. Test Vectors (テストベクタ)
- 11. ISO C99 Implementation of Base64 (Base64のISO C99実装)
- 12. Security Considerations (セキュリティに関する考慮事項)
- 13. Changes Since RFC 3548 (RFC 3548以降の変更)
- 14. Acknowledgements (謝辞)
- 15. Copying Conditions (コピー条件)
- 16. References (参考文献)
- 16.1 規範的参考文献
- 16.2 参考情報
Baseエンコーディングが重要な理由
Baseエンコーディングはインターネットデータ転送の基礎です。バイナリデータをテキスト形式に変換し、テキストのみをサポートする環境での転送と保存を可能にします。
主な用途
| エンコーディング | 主な目的 | 典型的なアプリケーション |
|---|---|---|
| Base64 | 汎用バイナリエンコーディング | MIME電子メール添付ファイル、JWTトークン、データURI |
| Base64URL | URL安全なエンコーディング | JWT、OAuthトークン、URLパラメータ |
| Base32 | 人間が読みやすいエンコーディング | TOTPキー、Crockfordエンコーディング |
| Base16 | 16進エンコーディング | ハッシュ値の表示、デバッグ出力 |
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...
関連リソース (Related Resources)
- 公式原文: RFC 4648 (TXT)
- 公式ページ: RFC 4648 DataTracker
- 正誤表: RFC Editor Errata
関連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を使用)