あれもPython,これもPython

Pythonメモ※本サイトはアフィリエイトを利用しています

PythonでBASE64を扱いたい(base64を使う)

PythonBASE64を扱うには、まさしくその通りの名前のモジュールbase64を用います。
画像を扱う時に備えて勉強しておく必要があります。

そのまえに、BASE64とは

BASE64はバイナリデータを64種類の文字に置き換えて表現する方法です。
64の内訳は

  • 大文字英数字:26
  • 小文字英数字:26
  • 数字:10
  • 記号(+/):2

となっています。

バイナリデータからBASE64に変換する場合、
6ビットずつに区切って変換していきます。

その他知識はWikipediaがよくまとまっています。
(具体的な手順、使用例など)

https://ja.wikipedia.org/wiki/Base64

pythonで行う場合

import base64

# base64にエンコード
from_str = "TEST"

str_encoded = base64.b64encode(from_str)

# base64からデコード
str_decoded = base64.b64(str_encoded)

その他

Pythonドキュメントによると

このモジュールはバイナリデータを印字可能な ASCII にエンコード関数、およびそのようなエンコードデータをバイナリにデコードする関数を提供します。それらは、RFC 3548 が定義する Base16, Base32, Base64エンコーディングデファクトスタンダードになっている Ascii85, Base85 のエンコーディングについてのエンコード、デコード関数です。

とあります。
たとえば、base32にエンコードする場合は
base64.b32encode()を用いますし、
url用のエンコードにはbase64.urlsafe_b64encode()を用います。

画像ファイルを扱う

ローカルファイルの場合は、
開いて読み込めばOKです。

import base64
with open("対象画像ファイル","rb") as f:
    img = f.read()
    img_base64 = base64.b64.encode(img)

ここから先はネットワークやらエンコードやらの知識が欠けているので、
今後勉強してこう。