18.12. base64 — RFC 3548:Base16、Base32、Base64データエンコーディング—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/2.7/library/base64
移動先:案内検索

18.12。 base64 — RFC 3548:Base16、Base32、Base64データエンコーディング

このモジュールは、 RFC 3548 で指定されているデータのエンコードとデコードを提供します。 この標準は、任意のバイナリ文字列を電子メールで安全に送信したり、URLの一部として使用したり、HTTPPOSTリクエストの一部として含めたりできるテキスト文字列にエンコードおよびデコードするためのBase16、Base32、およびBase64アルゴリズムを定義します。 エンコードアルゴリズムは、 uuencode プログラムと同じではありません。

このモジュールによって提供される2つのインターフェースがあります。 最新のインターフェイスは、 RFC 3548 (通常、URLおよびファイルシステムセーフ)で定義されているBase64アルファベットの両方を使用した文字列オブジェクトのエンコードとデコードをサポートしています。 従来のインターフェイスは、ファイルのようなオブジェクトや文字列との間のエンコードとデコードを提供しますが、Base64標準アルファベットのみを使用します。

Python 2.4で導入された最新のインターフェースは、以下を提供します。

base64.b64encode(s[, altchars])

Base64を使用して文字列をエンコードします。

s はエンコードする文字列です。 オプションの altchars は、+および/文字の代替アルファベットを指定する少なくとも長さ2の文字列である必要があります(追加の文字は無視されます)。 これにより、アプリケーションは次のことが可能になります。 URLまたはファイルシステムに安全なBase64文字列を生成します。 デフォルトはNoneで、標準のBase64アルファベットが使用されます。

エンコードされた文字列が返されます。

base64.b64decode(s[, altchars])

Base64でエンコードされた文字列をデコードします。

s はデコードする文字列です。 オプションの altchars は、+および/文字の代わりに使用される代替アルファベットを指定する、少なくとも長さ2の文字列である必要があります(追加の文字は無視されます)。

デコードされた文字列が返されます。 s のパディングが正しくない場合、TypeErrorが発生します。 通常のbase-64アルファベットでも代替アルファベットでもない文字は、パディングチェックの前に破棄されます。

base64.standard_b64encode(s)
標準のBase64アルファベットを使用して文字列 s をエンコードします。
base64.standard_b64decode(s)
標準のBase64アルファベットを使用して文字列 s をデコードします。
base64.urlsafe_b64encode(s)
URLおよびファイルシステムに安全なアルファベットを使用して文字列 s をエンコードします。これは、+の代わりに-を、/の代わりに_を使用します。標準のBase64アルファベットで。 結果には、=を含めることができます。
base64.urlsafe_b64decode(s)
URLおよびファイルシステムに安全なアルファベットを使用して文字列 s をデコードします。これは、+の代わりに-を、/の代わりに_を置き換えます。標準のBase64アルファベットで。
base64.b32encode(s)
Base32を使用して文字列をエンコードします。 s はエンコードする文字列です。 エンコードされた文字列が返されます。
base64.b32decode(s[, casefold[, map01]])

Base32でエンコードされた文字列をデコードします。

s はデコードする文字列です。 オプションの casefold は、小文字のアルファベットを入力として受け入れるかどうかを指定するフラグです。 セキュリティ上の理由から、デフォルトはFalseです。

RFC 3548 では、数字0(ゼロ)から文字O(oh)へのオプションのマッピング、および数字1(1)から文字I(1)へのオプションのマッピングが可能です。目)または文字L(el)。 オプションの引数 map01 は、Noneでない場合、数字1をマップする文字を指定します( map01Noneでない場合、数字0常に文字O)にマップされます。 セキュリティ上の理由から、デフォルトはNoneであるため、入力に0と1を使用することはできません。

デコードされた文字列が返されます。 s が誤って埋め込まれている場合、または文字列にアルファベット以外の文字が存在する場合、TypeErrorが発生します。

base64.b16encode(s)

Base16を使用して文字列をエンコードします。

s はエンコードする文字列です。 エンコードされた文字列が返されます。

base64.b16decode(s[, casefold])

Base16でエンコードされた文字列をデコードします。

s はデコードする文字列です。 オプションの casefold は、小文字のアルファベットを入力として受け入れるかどうかを指定するフラグです。 セキュリティ上の理由から、デフォルトはFalseです。

デコードされた文字列が返されます。 s が誤って埋め込まれた場合、または文字列にアルファベット以外の文字が存在する場合、TypeErrorが発生します。

レガシーインターフェイス:

base64.decode(input, output)
input ファイルの内容をデコードし、結果のバイナリデータを output ファイルに書き込みます。 input および output は、ファイルオブジェクト、またはファイルオブジェクトインターフェイスを模倣するオブジェクトのいずれかである必要があります。 input は、input.read()が空の文字列を返すまで読み取られます。
base64.decodestring(s)
文字列 s をデコードします。これには、base64でエンコードされたデータの1行以上が含まれている必要があり、結果のバイナリデータを含む文字列が返されます。
base64.encode(input, output)
input ファイルの内容をエンコードし、結果のbase64エンコードデータを output ファイルに書き込みます。 input および output は、ファイルオブジェクト、またはファイルオブジェクトインターフェイスを模倣するオブジェクトのいずれかである必要があります。 input は、input.read()が空の文字列を返すまで読み取られます。 encode()は、エンコードされたデータと末尾の改行文字('\n')を返します。
base64.encodestring(s)
文字列 s をエンコードします。これには、任意のバイナリデータを含めることができ、base64でエンコードされたデータの1行以上を含む文字列を返します。 encodestring()は、base64でエンコードされたデータの1行以上を含む文字列を返します。これには、常に余分な末尾の改行('\n')が含まれます。

モジュールの使用例:

>>> import base64
>>> encoded = base64.b64encode('data to be encoded')
>>> encoded
'ZGF0YSB0byBiZSBlbmNvZGVk'
>>> data = base64.b64decode(encoded)
>>> data
'data to be encoded'

も参照してください

モジュール binascii
ASCIIからバイナリおよびバイナリからASCIIへの変換を含むサポートモジュール。
RFC 1521 -MIME(多目的インターネットメール拡張機能)パート1:インターネットメッセージ本文の形式を指定および記述するためのメカニズム
セクション5.2「Base64Content-Transfer-Encoding」では、base64エンコーディングの定義について説明します。