Base64エンコードの基礎知識
Base64はバイナリデータをASCII文字列で表現するエンコード方式です。メール添付・JWT・Data URI・APIのバイナリ転送など、開発の多くの場面で使われています。
Base64とは何か
Base64は3バイトのバイナリデータを4文字のASCII文字列に変換するエンコード方式です。使用する文字はA-Z・a-z・0-9・+・/の64文字で、末尾に=のパディングが付きます。元のデータより約33%サイズが増えますが、テキストしか扱えないシステムでバイナリを安全に転送できるメリットがあります。
Standard Base64とURL-safe Base64の違い
通常のBase64は+と/を使いますが、これらはURLのクエリパラメータとして使うと%2B・%2Fにエスケープが必要です。URL-safe Base64は+を-に、/を_に置き換えることでURLに直接埋め込める形式にしたものです。JWTのトークンはURL-safe Base64(パディング=なし)を採用しています。
Data URI形式とは
Data URIは「data:[MIMEタイプ];base64,[Base64データ]」という形式で、HTMLやCSSにファイルを直接埋め込むための仕組みです。小さなアイコン画像をCSSのbackground-imageに直接記述したり、imgタグのsrcに画像を埋め込んだりできます。HTTPリクエストを1回減らせますが、ファイルサイズが増えるためサイズが大きいファイルには不向きです。
Base64を使う主なシーン
JWTのHeader・Payloadはどちらも独自のBase64(URL-safe)でエンコードされています。メールの添付ファイル(MIME)もBase64で本文に埋め込まれます。REST APIでバイナリファイルをJSONに含めて送信するときにも使われます。Base64 Studioではテキスト・画像ファイル両方のエンコード/デコードに対応しています。