📑
Base64エンコードとは何か?実務での使いどころと注意点を整理
執筆のきっかけ
LLMへファイル送付するとなった際に、Base64エンコードという単語に出会いました。何かの形式なのだろうなと推察しながら話を聞き、会議後に意味を調べました。
今回は会議中に出会った単語Base64エンコードについて、まとめます。
この記事で分かること
-
Base64エンコードとは何か? - どんな場面で使われるのか?
- なぜ「暗号化ではない」と言われるのか?
- 実務での利用シーン
Base64エンコードとは
画像・PDFなどのバイナリデータを、テキストとして表現するための方式。
使用する場面
テキストしか扱えないケースで、画像等を扱いたい場合に利用する。
| 場面 | 用途 |
|---|---|
| JSON / API | 画像・バイナリデータを埋め込む |
| HTTPヘッダ | Basic認証 |
| JWT | ペイロードの表現 |
| メール | 添付ファイル(MIME) |
| Azure / OpenAI | embedding・画像入力など |
仕組み
画像等を、英数字と一部の記号だけの文字列に変換する仕組み。
処理の流れ
- 画像等を8bit単位から6bit単位に分割する
- 6bitを
Base64文字に対応づける - 端数が出た場合、
=でパディングする
Base64文字
A–Z a–z 0–9 + /
具体例
- 文字列
- Hello
- Base64エンコード後
- SGVsbG8=
Pythonでの活用例
import base64
# エンコード
data = "Hello"
encoded = base64.b64encode(data.encode())
print(encoded) # b'SGVsbG8='
# デコード
decoded = base64.b64decode(encoded).decode()
print(decoded) # Hello
※ b'SGVsbG8=' となっているのは、エンコードの結果がバイト列(bytes)として
扱われるため
補足
バイナリデータとは
文字として解釈される前提を持たず、生の0と1のデータ。
| 観点 | テキストデータ | バイナリデータ |
|---|---|---|
| 人が読める? | 読める | 読めない |
| 例 | "Hello" |
画像・音声・exe |
| 文字コード | UTF-8 / Shift_JIS | 前提なし |
| 改行・文字の概念 | ある | ない |
- バイナリデータの代表例
- 画像(PNG / JPEG)
- 音声(MP3 / WAV)
- 動画(MP4)
- PDF / Word
- 実行ファイル(.exe)
- 暗号鍵・ハッシュ
- 機械学習モデルファイル
Discussion