base64 — Base16、Base32、Base64、Base85データエンコーディング—Pythonドキュメント

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

base64 — Base16、Base32、Base64、Base85データエンコーディング

ソースコード: :source: `Lib / base64.py`



このモジュールは、バイナリデータを印刷可能なASCII文字にエンコードし、そのようなエンコードをデコードしてバイナリデータに戻すための関数を提供します。 これは、Base16、Base32、およびBase64アルゴリズムを定義する RFC 3548 で指定されたエンコーディング、およびデファクトスタンダードのAscii85およびBase85エンコーディングのエンコーディングおよびデコーディング機能を提供します。

RFC 3548 エンコーディングは、バイナリデータのエンコーディングに適しているため、電子メールで安全に送信したり、URLの一部として使用したり、HTTPPOSTリクエストの一部として含めたりできます。 エンコードアルゴリズムは、 uuencode プログラムと同じではありません。

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

従来のインターフェースは文字列からのデコードをサポートしていませんが、ファイルオブジェクトとの間でエンコードおよびデコードするための関数を提供します。 Base64標準アルファベットのみをサポートし、 RFC 2045 に従って76文字ごとに改行を追加します。 RFC 2045 サポートを探している場合は、代わりに email パッケージを探していることに注意してください。

バージョン3.3で変更: ASCIIのみのUnicode文字列が、最新のインターフェイスのデコード機能で受け入れられるようになりました。


バージョン3.4での変更: バイトのようなオブジェクトは、このモジュールのすべてのエンコードおよびデコード機能で受け入れられるようになりました。 Ascii85 / Base85のサポートが追加されました。


最新のインターフェースは以下を提供します。

base64.b64encode(s, altchars=None)

Base64を使用してバイトのようなオブジェクト s をエンコードし、エンコードされたバイトを返します。

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

base64.b64decode(s, altchars=None, validate=False)

Base64でエンコードされたバイトのようなオブジェクトまたはASCII文字列 s をデコードし、デコードされたバイトを返します。

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

s が正しくパディングされていない場合、 binascii.Error 例外が発生します。

validateFalse(デフォルト)の場合、通常のbase-64アルファベットでも代替アルファベットでもない文字は、パディングチェックの前に破棄されます。 validateTrueの場合、入力内のこれらの非アルファベット文字は binascii.Error になります。

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

Base32でエンコードされたバイトのようなオブジェクトまたはASCII文字列 s をデコードし、デコードされたバイトを返します。

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

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

binascii.Error は、 s が誤って埋め込まれている場合、または入力にアルファベット以外の文字が存在する場合に発生します。

base64.b16encode(s)
Base16を使用してバイトのようなオブジェクト s をエンコードし、エンコードされたバイトを返します。
base64.b16decode(s, casefold=False)

Base16でエンコードされたバイトのようなオブジェクトまたはASCII文字列 s をデコードし、デコードされたバイトを返します。

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

binascii.Error は、 s が誤って埋め込まれている場合、または入力にアルファベット以外の文字が存在する場合に発生します。

base64.a85encode(b, *, foldspaces=False, wrapcol=0, pad=False, adobe=False)

Ascii85を使用してバイトのようなオブジェクト b をエンコードし、エンコードされたバイトを返します。

foldspaces は、「btoa」でサポートされている4つの連続したスペース(ASCII 0x20)の代わりに特別な短いシーケンス「y」を使用するオプションのフラグです。 この機能は、「標準」のAscii85エンコーディングではサポートされていません。

wrapcol は、出力に改行(b'\n')文字を追加するかどうかを制御します。 これがゼロ以外の場合、各出力行の長さは最大でこの数文字になります。

pad は、エンコード前に入力を4の倍数にパディングするかどうかを制御します。 btoaの実装は常にパディングすることに注意してください。

adobe は、エンコードされたバイトシーケンスを<~および~>でフレーム化するかどうかを制御します。これは、Adobeの実装で使用されます。

バージョン3.4の新機能。

base64.a85decode(b, *, foldspaces=False, adobe=False, ignorechars=b' \\t\\n\\r\\v')

Ascii85でエンコードされたバイトのようなオブジェクトまたはASCII文字列 b をデコードし、デコードされたバイトを返します。

foldspaces は、「y」の短いシーケンスを4つの連続するスペース(ASCII 0x20)の省略形として受け入れるかどうかを指定するフラグです。 この機能は、「標準」のAscii85エンコーディングではサポートされていません。

adobe は、入力シーケンスがAdobe Ascii85形式であるかどうかを制御します(つまり、 で囲まれています)。

ignorechars は、バイトのようなオブジェクトまたは入力から無視する文字を含むASCII文字列である必要があります。 これには空白文字のみが含まれている必要があり、デフォルトではすべての空白文字がASCIIで含まれています。

バージョン3.4の新機能。

base64.b85encode(b, pad=False)

base85を使用してバイトのようなオブジェクト b をエンコードします( git-style binary diffs)そしてエンコードされた bytes を返します。

pad がtrueの場合、入力はb'\0'で埋められるため、エンコード前の長さは4バイトの倍数になります。

バージョン3.4の新機能。

base64.b85decode(b)

base85でエンコードされたバイトのようなオブジェクトまたはASCII文字列 b をデコードし、デコードされたバイトを返します。 必要に応じて、パディングは暗黙的に削除されます。

バージョン3.4の新機能。

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

base64.decode(input, output)
バイナリ入力ファイルの内容をデコードし、結果のバイナリデータを出力ファイルに書き込みます。 入力および出力ファイルオブジェクトである必要があります。 input は、input.readline()が空のバイトオブジェクトを返すまで読み取られます。
base64.decodebytes(s)

バイトのようなオブジェクト s をデコードします。これには、base64でエンコードされたデータの1行以上が含まれている必要があり、デコードされたバイトを返します。

バージョン3.1の新機能。

base64.decodestring(s)

decodebytes()の非推奨のエイリアス。

バージョン3.1以降非推奨。

base64.encode(input, output)
バイナリ入力ファイルの内容をエンコードし、結果のbase64エンコードデータを出力ファイルに書き込みます。 入力および出力ファイルオブジェクトである必要があります。 input は、input.read()が空のバイトオブジェクトを返すまで読み取られます。 encode()は、出力の76バイトごとに改行文字(b'\n')を挿入し、 のように、出力が常に改行で終了するようにします。 RFC 2045 (MIME)。
base64.encodebytes(s)

バイトのようなオブジェクト s をエンコードします。これには、任意のバイナリデータを含めることができ、base64でエンコードされたデータを含むバイトを改行( [ X172X])は、出力の76バイトごとに挿入され、 RFC 2045 (MIME)に従って、末尾に改行があることを確認します。

バージョン3.1の新機能。

base64.encodestring(s)

encodebytes()の非推奨のエイリアス。

バージョン3.1以降非推奨。

モジュールの使用例:

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

も参照してください

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