【べーすろくじゅうし】

Base64 とは?

💡 バイナリを「テキストとして送れる形」に変換するエンコード方式
📌 このページのポイント
Base64 エンコーディング バイナリデータ 01001000 01100101 01101100 01101100 変換 Base64変換 6ビットずつ分割 → 64文字に変換 Base64文字列 SGVsbA== テキストで安全に送信 Base64 使用文字(64種 + パディング) A-Z (26文字) a-z (26文字) 0-9 (10文字) + / (2文字) = パディング 主な用途 メール添付 画像のData URI APIトークン
Base64エンコーディングの仕組み
ひよこ ひよこ

Base64って何のためにあるの?

ペンギン先生 ペンギン先生

テキストしか扱えない場所でバイナリ(画像・ファイルなど)を送るためのエンコード。昔のメールシステムはテキストしか送れなかったから、添付ファイルをBase64でテキストに変換して送っていた。今でもAPIJWTで使われる。

ひよこ ひよこ

JWTとBase64の関係は?

ペンギン先生 ペンギン先生

JWTはヘッダ・ペイロード・署名の3パーツをBase64URLエンコード(Base64の変種)して「.」でつなだもの。「eyJhbGci...」で始まるJWTをBase64でデコードすると「{"alg":"HS256",...}」というJSONが現れる。

ひよこ ひよこ

Base64は暗号化ではないの?

ペンギン先生 ペンギン先生

暗号化じゃない。誰でも簡単にデコードできる「エンコード(変換)」だよ。「機密情報をBase64にしたから安全」という誤解に注意。機密性が必要なら別途暗号化(AESRSAなど)が必要。JWTペイロードも丸見えなので注意。

ひよこ ひよこ

Base64にするとデータが大きくなるって聞いたけど、なんで使うの?

ペンギン先生 ペンギン先生

約33%サイズが増えるのは事実だけど、テキストしか扱えない場面ではそれでも必要なんだ。メールの添付ファイル(MIME)が典型例で、メールプロトコルが7ビットASCIIしか通さないからバイナリをBase64にして送るんだよ。実はData URIスキーム(data:image/png;base64,…)でHTMLに画像を埋め込む手法もあるけど、サイズが大きくなるし、ブラウザキャッシュも効かないから、小さなアイコン以外では避けた方がいいんだ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
Base64って出てきたら「バイナリデータを64種類の文字で表現するエンコード方式、テキストで扱えるようにする変換」と思えばOK!
📖 おまけ:英語の意味
「Base 64」 = 64進数ベースのエンコード
💬 64種類の文字を「基数(base)」として使うエンコード。RFC 4648で標準化されている。MIMEエンコード(メールの添付)でBase64が採用されて広まった
← 用語集にもどる