18.12. base64
— RFC 3548: Base16, Base32, Base64 データの符号化¶
このモジュールは、 RFC 3548 で定められた仕様によるデータの符号化 (エンコード、 encoding) および復元 (デコード、 decoding) を提供します。この RFC 標準では Base16, Base32 および Base64 が定義されており、これはバイナリ文字列とテキスト文字列とをエンコードあるいはデコードするためのアルゴリズムです。変換されたテキスト文字列は email で確実に送信したり、 URL の一部として使用したり、 HTTP POST リクエストの一部に含めることができます。これらの符号化アルゴリズムは uuencode で使われているものとは別物です。
There are two interfaces provided by this module. The modern interface supports encoding and decoding string objects using both base-64 alphabets defined in RFC 3548 (normal, and URL- and filesystem-safe). The legacy interface provides for encoding and decoding to and from file-like objects as well as strings, but only using the Base64 standard alphabet.
Python 2.4 で導入された現代的なインターフェイスは以下のものを提供します :
-
base64.
b64encode
(s[, altchars])¶ Base64 をつかって、文字列をエンコードします。
s はエンコードする文字列です。オプション引数 altchars は最低でも 2 の長さをもつ文字列で (これ以降の文字は無視されます)、これは
+
と/
の代わりに使われる代替アルファベットを指定します。これにより、アプリケーションはたとえば URL やファイルシステムの影響をうけない Base64 文字列を生成することができます。デフォルトの値はNone
で、これは標準の Base64 アルファベット集合が使われることを意味します。エンコードされた文字列が返されます。
-
base64.
b64decode
(s[, altchars])¶ Base64 文字列をデコード ( 復元 ) します。
s にはデコードする文字列を渡します。オプション引数の altchars は最低でも 2 の長さをもつ文字列で ( これ以降の文字は無視されます ) 、これは
+
と/
の代わりに使われる代替アルファベットを指定します。The decoded string is returned. A
TypeError
is raised if s is incorrectly padded. Characters that are neither in the normal base-64 alphabet nor the alternative alphabet are discarded prior to the padding check.
-
base64.
standard_b64encode
(s)¶ 標準の Base64 アルファベット集合をもちいて文字列 s をエンコード ( 符号化 ) します。
-
base64.
standard_b64decode
(s)¶ 標準の Base64 アルファベット集合をもちいて文字列 s をデコード ( 復元 ) します。
-
base64.
urlsafe_b64encode
(s)¶ Encode string s using the URL- and filesystem-safe alphabet, which substitutes
-
instead of+
and_
instead of/
in the standard Base64 alphabet. The result can still contain=
.
-
base64.
urlsafe_b64decode
(s)¶ Decode string s using the URL- and filesystem-safe alphabet, which substitutes
-
instead of+
and_
instead of/
in the standard Base64 alphabet.
-
base64.
b32encode
(s)¶ Base32 をつかって、文字列をエンコード ( 符号化 ) します。 s にはエンコードする文字列を渡し、エンコードされた文字列が返されます。
-
base64.
b32decode
(s[, casefold[, map01]])¶ Base32 をつかって、文字列をデコード ( 復元 ) します。
s にはエンコードする文字列を渡します。オプション引数 casefold は小文字のアルファベットを受けつけるかどうかを指定します。セキュリティ上の理由により、デフォルトではこれは
False
になっています。RFC 3548 は付加的なマッピングとして、数字の 0 (零) をアルファベットの O (オー) に、数字の 1 (壱) をアルファベットの I (アイ) または L (エル) に対応させることを許しています。オプション引数は map01 は、
None
でないときは、数字の 1 をどの文字に対応づけるかを指定します (map01 がNone
でないとき、数字の 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 をデコードして結果のバイナリデータを返します。 s には一行以上の base64 形式でエンコードされたデータが含まれている必要があります。
-
base64.
encode
(input, output)¶ input の中身を base64 形式でエンコードした結果を output に出力します。 input 、 output ともにファイルオブジェクトか、ファイルオブジェクトと同じインターフェースを持ったオブジェクトである必要があります。 input は
input.read()
が空文字列を返すまで読まれます。encode()
はエンコードされたデータと改行文字 ('\n'
) を出力します。
-
base64.
encodestring
(s)¶ 文字列 s ( 任意のバイナリデータを含むことができます ) を r base64 形式でエンコードした結果の (1 行以上の文字列 ) データを返します。
encodestring()
はエンコードされた一行以上のデータと改行文字 ('\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 (Multipurpose Internet Mail Extensions) Part One: Mechanisms for Specifying and Describing the Format of Internet Message Bodies
- Section 5.2, "Base64 Content-Transfer-Encoding," provides the definition of the base64 encoding.