3. 実装の相違点
基数エンコーディングの実装は、主に 5 つの側面で異なります。改行、パディング、アルファベット外の文字、アルファベットの選択、および正規(canonical)エンコーディングです。
3.1 エンコードされたデータ中の改行
エンコーダは、本仕様を参照する規格が明示的に要求しない限り、基数エンコードされたデータに改行を追加してはなりません(MUST NOT)。MIME および PEM の行長制限は、これらのフォーマット自体の規則であって、一般的な Base64 の要件ではありません。
3.2 エンコードされたデータのパディング
エンコーダは、通常、エンコードされたデータの末尾に適切なパディング文字を含めなければなりません(MUST)が、本仕様を参照する規格が明示的に別途規定する場合を除きます。
3.3 アルファベット外の文字
デコーダは、選択されたアルファベットに含まれない文字を含むエンコードされたデータを拒否しなければなりません(MUST)が、本仕様を参照する規格がそのような文字を意図的に許可している場合(たとえば空白文字を無視する場合)を除きます。
3.4 アルファベットの選択
異なる環境には異なるアルファベットが必要です。+ や / のような文字は URL やファイル名での使用に不便であり、これが RFC 4648 が URL およびファイル名安全な Base64 アルファベットを定義した理由です。
3.5 正規エンコーディング
パディングビットはゼロでなければなりません(MUST)。さもないと、同じバイナリデータが複数のテキスト表現を持つことになり、正規比較が破壊され、署名やハッシュに影響を与える可能性があります。