<!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"> </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"> </a> <P> For example, to obtain the digest of the string <code>'Nobody inspects the spammish repetition'</code>: <P> <dl><dd><pre class="verbatim"> >>> import md5 >>> m = md5.new() >>> m.update("Nobody inspects") >>> m.update(" the spammish repetition") >>> 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"> >>> 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>