| \section{\module{base64} --- |
| RFC 3548: Base16, Base32, Base64 Data Encodings} |
| |
| \declaremodule{standard}{base64} |
| \modulesynopsis{RFC 3548: Base16, Base32, Base64 Data Encodings} |
| |
| |
| \indexii{base64}{encoding} |
| \index{MIME!base64 encoding} |
| |
| This module provides data encoding and decoding as specified in |
| \rfc{3548}. This standard defines the Base16, Base32, and Base64 |
| algorithms for encoding and decoding arbitrary binary strings into |
| text strings that can be safely sent by email, used as parts of URLs, |
| or included as part of an HTTP POST request. The encoding algorithm is |
| not the same as the \program{uuencode} program. |
| |
| There are two interfaces provided by this module. The modern |
| interface supports encoding and decoding string objects using all |
| three alphabets. 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. |
| |
| The modern interface provides: |
| |
| \begin{funcdesc}{b64encode}{s\optional{, altchars}} |
| Encode a string use Base64. |
| |
| \var{s} is the string to encode. Optional \var{altchars} must be a |
| string of at least length 2 (additional characters are ignored) which |
| specifies an alternative alphabet for the \code{+} and \code{/} |
| characters. This allows an application to e.g. generate URL or |
| filesystem safe Base64 strings. The default is \code{None}, for which |
| the standard Base64 alphabet is used. |
| |
| The encoded string is returned. |
| \end{funcdesc} |
| |
| \begin{funcdesc}{b64decode}{s\optional{, altchars}} |
| Decode a Base64 encoded string. |
| |
| \var{s} is the string to decode. Optional \var{altchars} must be a |
| string of at least length 2 (additional characters are ignored) which |
| specifies the alternative alphabet used instead of the \code{+} and |
| \code{/} characters. |
| |
| The decoded string is returned. A \exception{TypeError} is raised if |
| \var{s} were incorrectly padded or if there are non-alphabet |
| characters present in the string. |
| \end{funcdesc} |
| |
| \begin{funcdesc}{standard_b64encode}{s} |
| Encode string \var{s} using the standard Base64 alphabet. |
| \end{funcdesc} |
| |
| \begin{funcdesc}{standard_b64decode}{s} |
| Decode string \var{s} using the standard Base64 alphabet. |
| \end{funcdesc} |
| |
| \begin{funcdesc}{urlsafe_b64encode}{s} |
| Encode string \var{s} using a URL-safe alphabet, which substitutes |
| \code{-} instead of \code{+} and \code{_} instead of \code{/} in the |
| standard Base64 alphabet. |
| \end{funcdesc} |
| |
| \begin{funcdesc}{urlsafe_b64decode}{s} |
| Decode string \var{s} using a URL-safe alphabet, which substitutes |
| \code{-} instead of \code{+} and \code{_} instead of \code{/} in the |
| standard Base64 alphabet. |
| \end{funcdesc} |
| |
| \begin{funcdesc}{b32encode}{s} |
| Encode a string using Base32. \var{s} is the string to encode. The |
| encoded string is returned. |
| \end{funcdesc} |
| |
| \begin{funcdesc}{b32decode}{s\optional{, casefold\optional{, map01}}} |
| Decode a Base32 encoded string. |
| |
| \var{s} is the string to decode. Optional \var{casefold} is a flag |
| specifying whether a lowercase alphabet is acceptable as input. For |
| security purposes, the default is \code{False}. |
| |
| \rfc{3548} allows for optional mapping of the digit 0 (zero) to the |
| letter O (oh), and for optional mapping of the digit 1 (one) to either |
| the letter I (eye) or letter L (el). The optional argument |
| \var{map01} when not \code{None}, specifies which letter the digit 1 should |
| be mapped to (when map01 is not \var{None}, the digit 0 is always |
| mapped to the letter O). For security purposes the default is |
| \code{None}, so that 0 and 1 are not allowed in the input. |
| |
| The decoded string is returned. A \exception{TypeError} is raised if |
| \var{s} were incorrectly padded or if there are non-alphabet characters |
| present in the string. |
| \end{funcdesc} |
| |
| \begin{funcdesc}{b16encode}{s} |
| Encode a string using Base16. |
| |
| \var{s} is the string to encode. The encoded string is returned. |
| \end{funcdesc} |
| |
| \begin{funcdesc}{b16decode}{s\optional{, casefold}} |
| Decode a Base16 encoded string. |
| |
| \var{s} is the string to decode. Optional \var{casefold} is a flag |
| specifying whether a lowercase alphabet is acceptable as input. For |
| security purposes, the default is \code{False}. |
| |
| The decoded string is returned. A \exception{TypeError} is raised if |
| \var{s} were incorrectly padded or if there are non-alphabet |
| characters present in the string. |
| \end{funcdesc} |
| |
| The legacy interface: |
| |
| \begin{funcdesc}{decode}{input, output} |
| Decode the contents of the \var{input} file and write the resulting |
| binary data to the \var{output} file. |
| \var{input} and \var{output} must either be file objects or objects that |
| mimic the file object interface. \var{input} will be read until |
| \code{\var{input}.read()} returns an empty string. |
| \end{funcdesc} |
| |
| \begin{funcdesc}{decodestring}{s} |
| Decode the string \var{s}, which must contain one or more lines of |
| base64 encoded data, and return a string containing the resulting |
| binary data. |
| \end{funcdesc} |
| |
| \begin{funcdesc}{encode}{input, output} |
| Encode the contents of the \var{input} file and write the resulting |
| base64 encoded data to the \var{output} file. |
| \var{input} and \var{output} must either be file objects or objects that |
| mimic the file object interface. \var{input} will be read until |
| \code{\var{input}.read()} returns an empty string. \function{encode()} |
| returns the encoded data plus a trailing newline character |
| (\code{'\e n'}). |
| \end{funcdesc} |
| |
| \begin{funcdesc}{encodestring}{s} |
| Encode the string \var{s}, which can contain arbitrary binary data, |
| and return a string containing one or more lines of |
| base64-encoded data. \function{encodestring()} returns a |
| string containing one or more lines of base64-encoded data |
| always including an extra trailing newline (\code{'\e n'}). |
| \end{funcdesc} |
| |
| An example usage of the module: |
| |
| \begin{verbatim} |
| >>> import base64 |
| >>> encoded = base64.b64encode('data to be encoded') |
| >>> encoded |
| 'ZGF0YSB0byBiZSBlbmNvZGVk' |
| >>> data = base64.b64decode(encoded) |
| >>> data |
| 'data to be encoded' |
| \end{verbatim} |
| |
| \begin{seealso} |
| \seemodule{binascii}{Support module containing \ASCII-to-binary |
| and binary-to-\ASCII{} conversions.} |
| \seerfc{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.} |
| \end{seealso} |