📑

Base64エンコードとは何か?実務での使いどころと注意点を整理

に公開

執筆のきっかけ

LLMへファイル送付するとなった際に、Base64エンコードという単語に出会いました。何かの形式なのだろうなと推察しながら話を聞き、会議後に意味を調べました。

今回は会議中に出会った単語Base64エンコードについて、まとめます。

この記事で分かること

  • Base64エンコードとは何か?
  • どんな場面で使われるのか?
  • なぜ「暗号化ではない」と言われるのか?
  • 実務での利用シーン

Base64エンコードとは

画像・PDFなどのバイナリデータを、テキストとして表現するための方式

使用する場面

テキストしか扱えないケースで、画像等を扱いたい場合に利用する。

場面 用途
JSON / API 画像・バイナリデータを埋め込む
HTTPヘッダ Basic認証
JWT ペイロードの表現
メール 添付ファイル(MIME)
Azure / OpenAI embedding・画像入力など

仕組み

画像等を、英数字と一部の記号だけの文字列に変換する仕組み。

処理の流れ

  1. 画像等を8bit単位から6bit単位に分割する
  2. 6bitをBase64文字に対応づける
  3. 端数が出た場合、=でパディングする

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