Python base64

base64 モジュール


Base64とは?

Base64は、バイナリデータをASCII文字列に変換するエンコーディング方式の一つです。主に以下の目的で使用されます:

1. データの転送
• バイナリデータをテキスト形式に変換することで、メールやHTTPなどのテキストベースのプロトコルでデータを安全に転送できます。
2. データの保存
• データベースやテキストファイルにバイナリデータを保存する際に、エンコーディングしてテキスト形式に変換します。
3. 互換性の確保
• 特定のシステムやアプリケーションでバイナリデータを扱えない場合、エンコードして互換性を確保します。


Base64の基本

Base64は、以下の64文字を使用してデータをエンコードします:

• アルファベットの大文字(A-Z)
• アルファベットの小文字(a-z)
• 数字(0-9)
• 記号(+、/)

バイナリデータを6ビットごとに分割し、それぞれのビットをBase64の文字セットにマッピングします。


4.1 Base64エンコード

バイナリデータをBase64形式にエンコードします。


例:Base64エンコード

import base64

# バイナリデータ
data = b"Hello, world!"

# Base64エンコード
encoded_data = base64.b64encode(data)
print(encoded_data)  # b'SGVsbG8sIHdvcmxkIQ=='

4.2 Base64デコード

Base64形式のデータを元のバイナリデータにデコードします。

例:Base64デコード

import base64

# Base64エンコードされたデータ
encoded_data = b'SGVsbG8sIHdvcmxkIQ=='

# Base64デコード
decoded_data = base64.b64decode(encoded_data)
print(decoded_data)  # b'Hello, world!'

4.3 テキストデータのエンコードとデコード

テキストデータをBase64エンコードしてからデコードする例を示します。

例:テキストデータのエンコードとデコード

import base64

# テキストデータ
text = "Pythonは楽しい!"

# テキストデータをバイト列に変換
text_bytes = text.encode('utf-8')

# Base64エンコード
encoded_text = base64.b64encode(text_bytes)
print(encoded_text)  # b'UGl0aG9u44Gn5qCh44GS44KK44Gq44GM77yB'

# Base64デコード
decoded_bytes = base64.b64decode(encoded_text)
decoded_text = decoded_bytes.decode('utf-8')
print(decoded_text)  # Pythonは楽しい!

Base64の使用例


1. バイナリファイルのエンコードとデコード

画像や音声ファイルなどのバイナリデータをBase64エンコードして保存し、後でデコードして使用することができます。

例:画像ファイルのエンコードとデコード

import base64

# 画像ファイルの読み込み
with open('example.png', 'rb') as image_file:
    image_data = image_file.read()

# Base64エンコード
encoded_image = base64.b64encode(image_data)
print(encoded_image)

# Base64デコード
decoded_image = base64.b64decode(encoded_image)

# デコードした画像データを新しいファイルに保存
with open('decoded_example.png', 'wb') as image_file:
    image_file.write(decoded_image)

2. HTTPリクエストでの使用

HTTPリクエストで認証情報を送信する際、Base64エンコードが使用されることがあります。

例:HTTP基本認証でのBase64エンコード

import base64
import urllib.request

# ユーザー名とパスワード
username = 'user'
password = 'pass'

# 認証情報をBase64エンコード
credentials = f"{username}:{password}"
encoded_credentials = base64.b64encode(credentials.encode('utf-8')).decode('utf-8')

# リクエストヘッダーに認証情報を追加
headers = {'Authorization': f'Basic {encoded_credentials}'}

# リクエストの送信
request = urllib.request.Request('http://www.example.com', headers=headers)
with urllib.request.urlopen(request) as response:
    content = response.read()
    print(content)

まとめ

Base64は、バイナリデータをテキスト形式に変換するエンコーディング方式であり、データの転送や保存、互換性の確保に役立ちます。base64 モジュールを使用することで、簡単にデータのエンコードとデコードが行えます。

この記事が気に入ったらサポートをしてみませんか?