I've written an implementation of the MD5 algorithm mainly for human consumption. Most implementations that I've seen, seem to derive from the RFC's sample implementation, which is optimized for performance and so isn't that readable.
readable-md5.lisp [as text] [its written in Common Lisp and has been tested with CMUCL and CLisp]