[ANN] LispWorks Port of Pierre R. Mai's MD5 Using 32bit Arithmetic
Hello Pierre and lispworkers, I am pleased to announce the LispWorks version of Pierre's implementation of MD5 algorithm (http://www.pmsf.de/resources/lisp/MD5.html). My version is based on raw 32bit arithmetic introduced in LW 4.4. It demonstrates speed increase of about two hundred times compared to the naive port. The code was tested on LWW 4.4.0 and 4.4.5 beta and available at http://lisp.ystok.ru/projects.html Notes: 1) Putting :md5-small-length onto *features* on LispWorks produces fixnum instead of (unsigned-byte 29) and imposes size restriction 8 MB as most-positive-fixnum = 8388607. 2) Invoking md5sum-sequence directly on Unicode string, e.g. lw:text-stirng, is improper because the code takes char-codes and merge them via assemble-ub32. Rule of thumb: Always coerce text string to octets beforehand! 3) It would be nice having LW implemented internally 32-bit circular shift (rotate) or at least logical right shift operations (in addition to the arithmetic shift sys:int32>>). Please enjoy. -- Sincerely, Dmitriy Ivanov lisp.ystok.ru