Sophie

Sophie

distrib > Mandriva > 8.2 > i586 > by-pkgid > 0b7eb7009605a11593fbe388d7fbee61 > files > 490

python-docs-2.2-9.1mdk.i586.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>15.2 md5 -- MD5 message digest algorithm</title>
<META NAME="description" CONTENT="15.2 md5 -- MD5 message digest algorithm">
<META NAME="keywords" CONTENT="lib">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<meta http-equiv="Content-Type" content="text/html; charset=">
<link rel="STYLESHEET" href="lib.css">
<link rel="first" href="lib.html">
<link rel="contents" href="contents.html" title="Contents">
<link rel="index" href="genindex.html" title="Index">
<LINK REL="next" href="module-sha.html">
<LINK REL="previous" href="module-hmac.html">
<LINK REL="up" href="crypto.html">
<LINK REL="next" href="module-sha.html">
</head>
<body>
<DIV CLASS="navigation">
<table align="center" width="100%" cellpadding="0" cellspacing="2">
<tr>
<td><A href="module-hmac.html"><img src="../icons/previous.gif"
  border="0" height="32"
  alt="Previous Page" width="32"></A></td>
<td><A href="crypto.html"><img src="../icons/up.gif"
  border="0" height="32"
  alt="Up One Level" width="32"></A></td>
<td><A href="module-sha.html"><img src="../icons/next.gif"
  border="0" height="32"
  alt="Next Page" width="32"></A></td>
<td align="center" width="100%">Python Library Reference</td>
<td><A href="contents.html"><img src="../icons/contents.gif"
  border="0" height="32"
  alt="Contents" width="32"></A></td>
<td><a href="modindex.html" title="Module Index"><img src="../icons/modules.gif"
  border="0" height="32"
  alt="Module Index" width="32"></a></td>
<td><A href="genindex.html"><img src="../icons/index.gif"
  border="0" height="32"
  alt="Index" width="32"></A></td>
</tr></table>
<b class="navlabel">Previous:</b> <a class="sectref" href="module-hmac.html">15.1 hmac  </A>
<b class="navlabel">Up:</b> <a class="sectref" href="crypto.html">15. Cryptographic Services</A>
<b class="navlabel">Next:</b> <a class="sectref" href="module-sha.html">15.3 sha  </A>
<br><hr>
</DIV>
<!--End of Navigation Panel-->

<H1><A NAME="SECTION0017200000000000000000">
15.2 <tt class="module">md5</tt> --
         MD5 message digest algorithm</A>
</H1>

<P>


<P>
This module implements the interface to RSA's MD5 message digest
<a name="l2h-3626">&nbsp;</a>algorithm (see also Internet <a class="rfc" name="rfcref-64788"
href="http://www.faqs.org/rfcs/rfc1321.html">RFC 1321</a>).  Its use is quite
straightforward: use <tt class="function">new()</tt> to create an md5 object.
You can now feed this object with arbitrary strings using the
<tt class="method">update()</tt> method, and at any point you can ask it for the
<i class="dfn">digest</i> (a strong kind of 128-bit checksum,
a.k.a. ``fingerprint'') of the concatenation of the strings fed to it
so far using the <tt class="method">digest()</tt> method.
<a name="l2h-3627">&nbsp;</a>
<P>
For example, to obtain the digest of the string <code>'Nobody inspects
the spammish repetition'</code>:

<P>
<dl><dd><pre class="verbatim">
&gt;&gt;&gt; import md5
&gt;&gt;&gt; m = md5.new()
&gt;&gt;&gt; m.update("Nobody inspects")
&gt;&gt;&gt; m.update(" the spammish repetition")
&gt;&gt;&gt; m.digest()
'\xbbd\x9c\x83\xdd\x1e\xa5\xc9\xd9\xde\xc9\xa1\x8d\xf0\xff\xe9'
</pre></dl>

<P>
More condensed:

<P>
<dl><dd><pre class="verbatim">
&gt;&gt;&gt; md5.new("Nobody inspects the spammish repetition").digest()
'\xbbd\x9c\x83\xdd\x1e\xa5\xc9\xd9\xde\xc9\xa1\x8d\xf0\xff\xe9'
</pre></dl>

<P>
The following values are provided as constants in the module and as
attributes of the md5 objects returned by <tt class="function">new()</tt>:

<P>
<dl><dt><b><a name="l2h-3619"><tt>digest_size</tt></a></b>
<dd>
  The size of the resulting digest in bytes.  This is always
  <code>16</code>.
</dl>

<P>
md5 objects support the following methods:

<P>
<dl><dt><b><a name="l2h-3620"><tt class="function">new</tt></a></b>(<big>[</big><var>arg</var><big>]</big>)
<dd>
Return a new md5 object.  If <var>arg</var> is present, the method call
<code>update(<var>arg</var>)</code> is made.
</dl>

<P>
<dl><dt><b><a name="l2h-3621"><tt class="function">md5</tt></a></b>(<big>[</big><var>arg</var><big>]</big>)
<dd>
For backward compatibility reasons, this is an alternative name for the
<tt class="function">new()</tt> function.
</dl>

<P>
An md5 object has the following methods:

<P>
<dl><dt><b><a name="l2h-3622"><tt class="method">update</tt></a></b>(<var>arg</var>)
<dd>
Update the md5 object with the string <var>arg</var>.  Repeated calls are
equivalent to a single call with the concatenation of all the
arguments: <code>m.update(a); m.update(b)</code> is equivalent to
<code>m.update(a+b)</code>.
</dl>

<P>
<dl><dt><b><a name="l2h-3623"><tt class="method">digest</tt></a></b>()
<dd>
Return the digest of the strings passed to the <tt class="method">update()</tt>
method so far.  This is a 16-byte string which may contain
non-ASCII characters, including null bytes.
</dl>

<P>
<dl><dt><b><a name="l2h-3624"><tt class="method">hexdigest</tt></a></b>()
<dd>
Like <tt class="method">digest()</tt> except the digest is returned as a string of
length 32, containing only hexadecimal digits.  This may 
be used to exchange the value safely in email or other non-binary
environments.
</dl>

<P>
<dl><dt><b><a name="l2h-3625"><tt class="method">copy</tt></a></b>()
<dd>
Return a copy (``clone'') of the md5 object.  This can be used to
efficiently compute the digests of strings that share a common initial
substring.
</dl>

<P>
<div class="seealso">
  <p class="heading"><b>See Also:</b></p>

  <dl compact class="seemodule">
    <dt>Module <b><tt class="module"><a href="module-sha.html">sha</a></tt>:</b>
    <dd>Similar module implementing the Secure Hash
                  Algorithm (SHA).  The SHA algorithm is considered a
                  more secure hash.
  </dl>
</div>

<DIV CLASS="navigation">
<p><hr>
<table align="center" width="100%" cellpadding="0" cellspacing="2">
<tr>
<td><A href="module-hmac.html"><img src="../icons/previous.gif"
  border="0" height="32"
  alt="Previous Page" width="32"></A></td>
<td><A href="crypto.html"><img src="../icons/up.gif"
  border="0" height="32"
  alt="Up One Level" width="32"></A></td>
<td><A href="module-sha.html"><img src="../icons/next.gif"
  border="0" height="32"
  alt="Next Page" width="32"></A></td>
<td align="center" width="100%">Python Library Reference</td>
<td><A href="contents.html"><img src="../icons/contents.gif"
  border="0" height="32"
  alt="Contents" width="32"></A></td>
<td><a href="modindex.html" title="Module Index"><img src="../icons/modules.gif"
  border="0" height="32"
  alt="Module Index" width="32"></a></td>
<td><A href="genindex.html"><img src="../icons/index.gif"
  border="0" height="32"
  alt="Index" width="32"></A></td>
</tr></table>
<b class="navlabel">Previous:</b> <a class="sectref" href="module-hmac.html">15.1 hmac  </A>
<b class="navlabel">Up:</b> <a class="sectref" href="crypto.html">15. Cryptographic Services</A>
<b class="navlabel">Next:</b> <a class="sectref" href="module-sha.html">15.3 sha  </A>
<hr>
<span class="release-info">Release 2.2, documentation updated on December 21, 2001.</span>
</DIV>
<!--End of Navigation Panel-->
<ADDRESS>
See <i><a href="about.html">About this document...</a></i> for information on suggesting changes.
</ADDRESS>
</BODY>
</HTML>