\section{Built-in module \sectcode{md5}}
\bimodindex{md5}

This module implements the interface to RSA's MD5 message digest
algorithm (see also the file \file{md5.doc}). Its use is quite
straightforward: use the function \code{md5} to create an
\dfn{md5}-object. You can now ``feed'' this object with arbitrary
strings.

At any time you can ask for the ``final'' digest of the object. Internally,
a temporary copy of the object is made and the digest is computed and
returned. Because of the copy, the digest operation is not destructive
for the object. Before a more exact description of the module's use, a small
example will be helpful: 
to obtain the digest of the string \code{'abc'}, use \ldots

\bcode\begin{verbatim}
>>> from md5 import md5
>>> m = md5()
>>> m.update('abc')
>>> m.digest()
'\220\001P\230<\322O\260\326\226?}(\341\177r'
\end{verbatim}\ecode

More condensed:

\bcode\begin{verbatim}
>>> md5('abc').digest()
'\220\001P\230<\322O\260\326\226?}(\341\177r'
\end{verbatim}\ecode

\renewcommand{\indexsubitem}{(in module md5)}
\begin{funcdesc}{md5}{\optional{arg}}
  Create a new md5-object. If \var{arg} is present, an initial
  \code{update} method is called with \var{arg} as argument.
\end{funcdesc}

An md5-object has the following methods:

\renewcommand{\indexsubitem}{(md5 method)}
\begin{funcdesc}{update}{arg}
  Update this md5-object with the string \var{arg}.
\end{funcdesc}

\begin{funcdesc}{digest}{}
% XXX The following is not quite clear; what does MD5Final do?
  Return the \dfn{digest} of this md5-object. Internally, a copy is made
  and the \C-function \code{MD5Final} is called. Finally the digest is
  returned.
\end{funcdesc}

\begin{funcdesc}{copy}{}
  Return a separate copy of this md5-object.  An \code{update} to this
  copy won't affect the original object.
\end{funcdesc}
