4. Base64エンコーディング
以下のBase64の説明は、[3]、[4]、[5]、および[6]から派生したものです。このエンコーディングは「base64」と呼ばれることがあります。
Base64エンコーディングは、大文字と小文字の両方を使用できるが人間が読める必要はない形式で、任意のオクテットシーケンスを表現するように設計されています。
US-ASCIIの65文字のサブセットが使用され、印刷可能な文字ごとに6ビットを表現できます。(追加の65番目の文字「=」は、特別な処理機能を示すために使用されます。)
エンコーディングプロセスは、24ビットの入力ビットグループを4つのエンコードされた文字の出力文字列として表現します。左から右に進み、3つの8ビット入力グループを連結することによって24ビット入力グループが形成されます。これらの24ビットは、4つの連結された6ビットグループとして扱われ、それぞれがBase64アルファベットの単一の文字に変換されます。
各6ビットグループは、64個の印刷可能な文字の配列へのインデックスとして使用されます。インデックスによって参照される文字が出力文字列に配置されます。
表1: Base64アルファベット
値 エンコード 値 エンコード 値 エンコード 値 エンコード
0 A 17 R 34 i 51 z
1 B 18 S 35 j 52 0
2 C 19 T 36 k 53 1
3 D 20 U 37 l 54 2
4 E 21 V 38 m 55 3
5 F 22 W 39 n 56 4
6 G 23 X 40 o 57 5
7 H 24 Y 41 p 58 6
8 I 25 Z 42 q 59 7
9 J 26 a 43 r 60 8
10 K 27 b 44 s 61 9
11 L 28 c 45 t 62 +
12 M 29 d 46 u 63 /
13 N 30 e 47 v
14 O 31 f 48 w (pad) =
15 P 32 g 49 x
16 Q 33 h 50 y
エンコードされるデータの最後で24ビット未満しか利用できない場合、特別な処理が実行されます。完全なエンコーディング量子は、常に量の最後で完了します。入力グループで24ビット未満の入力ビットしか利用できない場合、値ゼロのビットが(右側に)追加されて、6ビットグループの整数倍が形成されます。データの最後でのパディングは、'='文字を使用して実行されます。すべてのBase64入力はオクテットの整数倍であるため、次のケースのみが発生する可能性があります:
(1) エンコーディング入力の最終量子が24ビットの整数倍である場合; ここでは、エンコードされた出力の最終単位は、「=」パディングなしで4文字の整数倍になります。
(2) エンコーディング入力の最終量子が正確に8ビットである場合; ここでは、エンコードされた出力の最終単位は、2つの文字とそれに続く2つの「=」パディング文字になります。
(3) エンコーディング入力の最終量子が正確に16ビットである場合; ここでは、エンコードされた出力の最終単位は、3つの文字とそれに続く1つの「=」パディング文字になります。