ablog

不器用で落着きのない技術者のメモ

base64 エンコーディングされたバイナリデータは元より大きくなる

メールの添付ファイルが元のファイルよりもサイズが大きくなる理由
RFC 2045 で定義されている Multipurpose Internet Mail Extensions(MIME)の仕様には、バイナリからテキストへのいくつかのエンコーディングの 1 つとして「base64」が示されています。 MIMEbase64 エンコーディングは、プライバシー強化メール(PEM)の RFC 1421 バージョンのエンコーディングに基づき、PEM と同じ 64 文字のアルファベットおよびエンコーディングカニズムを使用し、出力のパディングには同様に「=」記号を用います。

MIME では、base64 エンコーディングされた行に対して固定長は規定されていませんが、76 文字の最大長は規定されています。 また、余分なアルファベット文字は、規格に準拠したデコーダですべて無視されなければならないことも規定しています。ただし、ほとんどの実装では CR/LF の改行ペアを使用して符号化された行を区切ります。

このため、MIME 準拠の base64 エンコーディングされたバイナリ データの実際の長さは、通常、元のデータ長の約 137 % になります。ただし、非常に短いメッセージの場合、ヘッダーのオーバーヘッドのせいでオーバーヘッドが大幅に増える可能性があります。 Base64 エンコーディングされたバイナリ データの最終的なサイズは、おおよそで元のデータ サイズの 1.37 倍に 814 バイト(ヘッダー用)を加えたサイズと等しくなります。

メールの添付ファイルが元のファイルよりもサイズが大きくなる理由 - Cisco