Base64とは
Base64は、バイナリデータをテキスト形式に変換するための効率的な仕組みである。
1. 基本的な特徴
- 6ビット単位でのデータ処理
- 64種類の文字セットを使用(A-Z, a-z, 0-9, +, /)
- ASCII文字の範囲内で安全な処理が可能
2. 文字セットの構成
- 英大文字(A-Z): 26文字
- 英小文字(a-z): 26文字
- 数字(0-9): 10文字
- 記号(+ と /): 2文字
- パディング文字(=): 補完用
Base64変換対応表
バイナリ | 文字 | バイナリ | 文字 | バイナリ | 文字 | バイナリ | 文字 |
---|---|---|---|---|---|---|---|
000000 | A | 010000 | Q | 100000 | g | 110000 | w |
000001 | B | 010001 | R | 100001 | h | 110001 | x |
000010 | C | 010010 | S | 100010 | i | 110010 | y |
000011 | D | 010011 | T | 100011 | j | 110011 | z |
000100 | E | 010100 | U | 100100 | k | 110100 | 0 |
000101 | F | 010101 | V | 100101 | l | 110101 | 1 |
000110 | G | 010110 | W | 100110 | m | 110110 | 2 |
000111 | H | 010111 | X | 100111 | n | 110111 | 3 |
001000 | I | 011000 | Y | 101000 | o | 111000 | 4 |
001001 | J | 011001 | Z | 101001 | p | 111001 | 5 |
001010 | K | 011010 | a | 101010 | q | 111010 | 6 |
001011 | L | 011011 | b | 101011 | r | 111011 | 7 |
001100 | M | 011100 | c | 101100 | s | 111100 | 8 |
001101 | N | 011101 | d | 101101 | t | 111101 | 9 |
001110 | O | 011110 | e | 101110 | u | 111110 | + |
001111 | P | 011111 | f | 101111 | v | 111111 | / |
3. 変換プロセス
Base64変換の基本プロセス:
- 入力データのバイト列への変換
- バイト列の2進数(8ビット)表現への変換
- 2進数データの6ビット単位への分割
- パディング処理(必要な場合)
- 6ビット値のBase64文字へのマッピング
- パディング文字(=)の追加(必要な場合)
具体例:"Logto"の変換プロセス
4. データ変換の効率性
- データ量増加の抑制
- 3バイトのデータを4文字に変換する仕組みによる約33%の増加率
- 例:「abc」(3文字)→「YWJj」(4文字)
- 他方式との効率性比較
- 16進数変換ではデータ量が2倍(100%増加)となる
- 例:「abc」(3文字)→「616263」(6文字)
- 6ビット単位の変換による増加率の抑制
- 16進数変換ではデータ量が2倍(100%増加)となる
5. 主な用途
- 電子メール(MIME)添付ファイル
- JSON/XMLのバイナリデータ埋め込み
- URLパラメータでのデータ転送
- JWT(JSON Web Token)
6. 利点
- 全環境での安全な利用
- 制御文字の排除
- 印刷可能文字のみの使用
- 各種プロトコルとの高い互換性