\section{\module{base64} --- Encode and decode MIME base64 data} \declaremodule{standard}{base64} \modulesynopsis{Encode and decode files using the MIME base64 data.} \indexii{base64}{encoding} \index{MIME!base64 encoding} This module performs base64 encoding and decoding of arbitrary binary strings into text strings that can be safely sent by email or included as part of an HTTP POST request. The encoding scheme is defined in \rfc{1521} (\emph{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'') and is used for MIME email and various other Internet-related applications; it is not the same as the output produced by the \program{uuencode} program. For example, the string \code{'www.python.org'} is encoded as the string \code{'d3d3LnB5dGhvbi5vcmc=\e n'}. \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. If the last input character is not a newline (\code{'\e n'}), a newline will be added to the input data. \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. If the last character of \var{s} is not a newline (\code{'\e n'}), a newline will be added. This causes \code{encodestring('hello!')} to return the same value as \code{encodestring('hello!\e n')}. \end{funcdesc} \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}