1998-08-10 16:42:37 -03:00
|
|
|
\section{\module{base64} ---
|
2004-01-03 21:14:01 -04:00
|
|
|
RFC 3548: Base16, Base32, Base64 Data Encodings}
|
1999-02-22 09:45:09 -04:00
|
|
|
|
1998-07-23 14:59:49 -03:00
|
|
|
\declaremodule{standard}{base64}
|
2004-01-03 21:14:01 -04:00
|
|
|
\modulesynopsis{RFC 3548: Base16, Base32, Base64 Data Encodings}
|
1998-07-23 14:59:49 -03:00
|
|
|
|
|
|
|
|
1998-04-02 12:24:29 -04:00
|
|
|
\indexii{base64}{encoding}
|
|
|
|
\index{MIME!base64 encoding}
|
1997-04-27 18:25:52 -03:00
|
|
|
|
2004-01-03 21:14:01 -04:00
|
|
|
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,
|
2004-12-12 12:52:40 -04:00
|
|
|
or included as part of an HTTP POST request. The encoding algorithm is
|
2004-01-03 21:14:01 -04:00
|
|
|
not the same as the \program{uuencode} program.
|
1997-04-27 18:25:52 -03:00
|
|
|
|
2004-01-03 21:14:01 -04:00
|
|
|
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:
|
1997-11-30 01:53:22 -04:00
|
|
|
|
1998-01-06 23:47:10 -04:00
|
|
|
\begin{funcdesc}{decode}{input, output}
|
1997-04-27 18:25:52 -03:00
|
|
|
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
|
1998-04-02 12:24:29 -04:00
|
|
|
base64 encoded data, and return a string containing the resulting
|
1997-04-27 18:25:52 -03:00
|
|
|
binary data.
|
|
|
|
\end{funcdesc}
|
|
|
|
|
1998-01-06 23:47:10 -04:00
|
|
|
\begin{funcdesc}{encode}{input, output}
|
1997-04-27 18:25:52 -03:00
|
|
|
Encode the contents of the \var{input} file and write the resulting
|
1998-04-02 12:24:29 -04:00
|
|
|
base64 encoded data to the \var{output} file.
|
1997-04-27 18:25:52 -03:00
|
|
|
\var{input} and \var{output} must either be file objects or objects that
|
|
|
|
mimic the file object interface. \var{input} will be read until
|
2002-05-16 01:28:44 -03:00
|
|
|
\code{\var{input}.read()} returns an empty string. \function{encode()}
|
|
|
|
returns the encoded data plus a trailing newline character
|
|
|
|
(\code{'\e n'}).
|
1997-04-27 18:25:52 -03:00
|
|
|
\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
|
2002-05-16 01:28:44 -03:00
|
|
|
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'}).
|
1997-04-27 18:25:52 -03:00
|
|
|
\end{funcdesc}
|
1999-04-23 12:52:18 -03:00
|
|
|
|
2006-07-27 19:49:54 -03:00
|
|
|
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}
|
|
|
|
|
1999-04-23 12:52:18 -03:00
|
|
|
\begin{seealso}
|
2001-11-28 03:26:15 -04:00
|
|
|
\seemodule{binascii}{Support module containing \ASCII-to-binary
|
2000-10-18 14:43:06 -03:00
|
|
|
and binary-to-\ASCII{} conversions.}
|
2001-04-12 13:47:17 -03:00
|
|
|
\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.}
|
1999-04-23 12:52:18 -03:00
|
|
|
\end{seealso}
|