Base64エンコーディング解説:仕組みと使い方
Base64エンコーディングの徹底解説、その背後のアルゴリズム、Web開発での実用的な使用例。
Base64エンコーディングは、コンピューティングにおける最も基本的なエンコーディング方式の一つです。メールに画像を埋め込む場合でも、JSONにバイナリデータを保存する場合でも、認証トークンを処理する場合でも、Base64はあらゆるところにあります。
Base64とは正確には何か?
Base64は、バイナリデータを64個の印刷可能なASCII文字の文字列に変換するバイナリからテキストへのエンコーディング方式です。
Base64アルファベット
標準的なBase64アルファベットは以下で構成されます:
A-Z(インデックス0-25)a-z(インデックス26-51)0-9(インデックス52-61)+(インデックス62)/(インデックス63)=(パディング文字)
ステップバイステップのエンコードプロセス
"Hi!"という文字列をステップバイステップでエンコードしてみましょう:
1. バイナリに変換: H=01001000, i=01101001, !=00100001
2. 連結: 010010000110100100100001
3. 6ビットグループに分割: 010010 000110 100100 100001
4. 10進数に変換: 18, 6, 36, 33
5. Base64アルファベットにマッピング: S, G, k, h
6. 結果: SGkh
パディングの説明
入力長が3で割り切れない場合、=パディングが追加されます。
URL安全なBase64
標準Base64はURLで特別な意味を持つ+と/を使用します。URL安全なBase64(Base64url)は:
+を-に置換/を_に置換- パディング
=はしばしば省略
この変種はRFC 4648で規定されており、JWTトークンやその他のURL関連のコンテキストで使用されます。
一般的な使用例
HTML/CSSのデータURI
メール添付ファイル(MIME)
SMTPなどのメールプロトコルは7ビットASCIIのみをサポートします。Base64により、バイナリファイルを安全に送信できます。
HTTP基本認証
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
サイズオーバーヘッド
Base64エンコーディングはデータサイズを約33%増加させます。3バイトの入力は4バイトの出力を生成します。
重要な注意事項
- Base64はエンコーディングであり、暗号化ではありません
- 常に33%のサイズ増加を考慮してください
- URLにBase64文字列が含まれる場合はURL安全な変種を使用してください
Base64エンコーダー/デコーダーツールで即座にエンコード・デコードしてみてください。