<html lang="en"> <head> <title>sb-md5 - SBCL 1.0.31 User Manual</title> <meta http-equiv="Content-Type" content="text/html"> <meta name="description" content="SBCL 1.0.31 User Manual"> <meta name="generator" content="makeinfo 4.13"> <link title="Top" rel="start" href="index.html#Top"> <link rel="up" href="Contributed-Modules.html#Contributed-Modules" title="Contributed Modules"> <link rel="prev" href="sb_002dposix.html#sb_002dposix" title="sb-posix"> <link rel="next" href="sb_002dqueue.html#sb_002dqueue" title="sb-queue"> <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage"> <!-- This manual is part of the SBCL software system. See the `README' file for more information. This manual is largely derived from the manual for the CMUCL system, which was produced at Carnegie Mellon University and later released into the public domain. This manual is in the public domain and is provided with absolutely no warranty. See the `COPYING' and `CREDITS' files for more information. --> <meta http-equiv="Content-Style-Type" content="text/css"> <style type="text/css"><!-- pre.display { font-family:inherit } pre.format { font-family:inherit } pre.smalldisplay { font-family:inherit; font-size:smaller } pre.smallformat { font-family:inherit; font-size:smaller } pre.smallexample { font-size:smaller } pre.smalllisp { font-size:smaller } span.sc { font-variant:small-caps } span.roman { font-family:serif; font-weight:normal; } span.sansserif { font-family:sans-serif; font-weight:normal; } --></style> </head> <body> <div class="node"> <a name="sb-md5"></a> <a name="sb_002dmd5"></a> <p> Next: <a rel="next" accesskey="n" href="sb_002dqueue.html#sb_002dqueue">sb-queue</a>, Previous: <a rel="previous" accesskey="p" href="sb_002dposix.html#sb_002dposix">sb-posix</a>, Up: <a rel="up" accesskey="u" href="Contributed-Modules.html#Contributed-Modules">Contributed Modules</a> <hr> </div> <h3 class="section">16.4 sb-md5</h3> <p><a name="index-Hashing_002c-cryptographic-646"></a> The <code>sb-md5</code> module implements the RFC1321 MD5 Message Digest Algorithm. [FIXME cite] <p><a name="Function-sb_002dmd5_003amd5sum_002dfile"></a> <div class="defun"> — Function: <b>sb-md5:md5sum-file</b><var> pathname<a name="index-sb_002dmd5_003amd5sum_002dfile-647"></a></var><br> <blockquote><p><a name="index-sb_002dmd5_003amd5sum_002dfile-648"></a>Calculate the MD5 message-digest of the file designated by pathname. </p></blockquote></div> <p><a name="Function-sb_002dmd5_003amd5sum_002dsequence"></a> <div class="defun"> — Function: <b>sb-md5:md5sum-sequence</b><var> sequence &key start end<a name="index-sb_002dmd5_003amd5sum_002dsequence-649"></a></var><br> <blockquote><p><a name="index-sb_002dmd5_003amd5sum_002dsequence-650"></a>Calculate the MD5 message-digest of data bounded by <code>start</code> and <code>end</code> in <code>sequence</code> , which must be a vector with element-type (UNSIGNED-BYTE 8). </p></blockquote></div> <p><a name="Function-sb_002dmd5_003amd5sum_002dstream"></a> <div class="defun"> — Function: <b>sb-md5:md5sum-stream</b><var> stream<a name="index-sb_002dmd5_003amd5sum_002dstream-651"></a></var><br> <blockquote><p><a name="index-sb_002dmd5_003amd5sum_002dstream-652"></a>Calculate an MD5 message-digest of the contents of <code>stream</code>, whose element-type has to be (UNSIGNED-BYTE 8). </p></blockquote></div> <p><a name="Function-sb_002dmd5_003amd5sum_002dstring"></a> <div class="defun"> — Function: <b>sb-md5:md5sum-string</b><var> string &key external-format start end<a name="index-sb_002dmd5_003amd5sum_002dstring-653"></a></var><br> <blockquote><p><a name="index-sb_002dmd5_003amd5sum_002dstring-654"></a>Calculate the MD5 message-digest of the binary representation of <code>string</code> (as octets) in <code>external-format</code>. The boundaries <code>start</code> and <code>end</code> refer to character positions in the string, not to octets in the resulting binary representation. </p></blockquote></div> <h4 class="subsection">16.4.1 Credits</h4> <p>The implementation for CMUCL was largely done by Pierre Mai, with help from members of the <code>cmucl-help</code> mailing list. Since CMUCL and SBCL are similar in many respects, it was not too difficult to extend the low-level implementation optimizations for CMUCL to SBCL. Following this, SBCL's compiler was extended to implement efficient compilation of modular arithmetic (see <a href="Modular-arithmetic.html#Modular-arithmetic">Modular arithmetic</a>), which enabled the implementation to be expressed in portable arithmetical terms, apart from the use of <code>rotate-byte</code> for bitwise rotation. <a name="index-rotate_002dbyte-655"></a> </body></html>