Base64とは
Base64は、データを64種類の印字可能な
英数字と記号を用いて表現するエンコード方式です。主に、7ビットのデータしか扱えない環境で、
バイナリデータやマルチバイト文字を安全に伝送するために使用されます。MIME(
Multipurpose Internet Mail Extensions)規格によって規定されており、
電子メールでの添付ファイル送信や、Basic認証などで広く採用されています。
Base64の仕組み
Base64エンコードのプロセスは以下の通りです。
1. 元のデータを6ビットずつに分割します。6ビットに満たない場合は、末尾に0を追加して6ビットにします。
2. 各6ビットの値を、対応するBase64の文字に変換します。変換表には、アルファベット
[大文字]、アルファベット
[小文字]、数字(0-9)の62文字と、記号の「+」「/」が使用されます。
3. 変換後の文字列が4文字に満たない場合は、末尾に「=」記号を追加して4文字の倍数になるように調整します。
この変換により、データサイズは元の約4/3(約133%)に増加します。さらに、MIME基準では76文字ごとに改行コードが挿入されるため、実際には約137%程度に増加します。
Base64の利用例
電子メール: SMTPなどのプロトコルでは7ビットのデータしか扱えないため、添付ファイルなどのバイナリデータをBase64でエンコードして送信します。
Basic認証: HTTPヘッダーで特殊文字の使用が制限されているため、ユーザー名とパスワードをコロン(:)で区切り、Base64でエンコードした文字列が認証に用いられます。
電子掲示板: 画像や圧縮ファイルなどのバイナリデータを投稿するために、Base64エンコードが用いられることがあります。
Base64の問題点
Base64エンコードによってデータ量が増加するため、大きなファイルの送受信には不向きです。また、英文テキストに特殊文字が混在する場合、特殊文字だけをエンコードする方がデータ効率が良いことがあります。
Base64の変形版
URLにBase64文字列を含める際、「+」と「/」がURLエンコードの対象となり、問題を引き起こすことがあります。そのため、これらの文字の代わりに、「!」、「-」、「.」などの別の記号を用いることがあります。同様に、XMLや正規表現など、特定の箇所で「+」と「/」の使用が制限される場合にも、変形版のBase64が用いられます。
関連技術
URLエンコード
uuencode
BinHex
ish
二進法
四進法
八進法
十六進法
Base32
参考資料
The Base16, Base32, and Base64 Data Encodings - IETFによる規格書(英語)。RFC 3548。
ベース64とベース32とベース16コード化 - 上記の参考和訳。
The Base16, Base32, and Base64 Data Encodings - IETFによる規格書(英語)。RFC 4648。
ベース64とベース32とベース16コード化 - 上記の参考和訳。
Online Base64 Encoding
Online Base64 Decoding
この解説を通して、Base64エンコードの基本的な仕組みや利用場面、注意点について理解を深めていただければ幸いです。