This directory contains a description and software for the RIPEMD-160 and RIPEMD-128 hash functions, as well as software for the MDx-MACs based on RIPEMD-160 and RIPEMD-128. The implementations are written for the sole purpose of documentation. No optimization whatsoever is performed: only readability and portability were kept in mind. ripemd160.ps.gz: description of RIPEMD-160 and RIPEMD-128. This has also been published in Fast Software Encryption, LNCS 1039, D. Gollmann (Ed.), pp. 71-82. This version differs from the published version in that a figure has been added, four small mistakes in the pseudo-code of Appendix A have been corrected, and the order in which the permutations pi and rho^i are applied in Section 3 have been exchanged. In addition, the hash value of the message consisting of 1 million 'a' characters has been added to Appendix B for both RIPEMD-160 and RIPEMD-128. rmd160.c: source code for RIPEMD-160 rmd160.h: include file for RIPEMD-160. Make sure that the types byte and dword are respectively 8 and 32-bit unsigned quantities. rmd128.c: source code for RIPEMD-128 rmd128.h: include file for RIPEMD-128. Make sure that the types byte and dword are respectively 8 and 32-bit unsigned quantities. hashtest.c: driver for both RIPEMD-160 and RIPEMD-128. Default is RIPEMD-160. For compilation with rmd128.c define RMDsize=128. Command line arguments of hashtest: any combination of filename -- compute hash code of file read binary -sstring -- print string & hashcode -t -- perform time trial -x -- execute standard test suite, ASCII input A bug in the RMDonemillion() function of this driver has been corrected. rmd160mc.c: source code for RIPEMD160-MAC rmd160mc.h: include file for RIPEMD160-MAC. Make sure that the types byte and dword are respectively 8 and 32-bit unsigned quantities. rmd128mc.c: source code for RIPEMD128-MAC rmd128mc.h: include file for RIPEMD128-MAC. Make sure that the types byte and dword are respectively 8 and 32-bit unsigned quantities. mactest.c: driver for both RIPEMD160-MAC and RIPEMD128-MAC. Default is RIPEMD160-MAC. For compilation with rmd128mc.c define RMDsize=128. Command line arguments of mactest: any combination of filename keyfilename -- compute MAC of file binary read using key in keyfilename (hexadecimal format) -sstring -- print string & MAC for default key -t -- perform time trial -x -- execute standard test suite, ASCII input Any comments on the description or the implementation can be mailed to antoon.bosselaers@esat.kuleuven.ac.be See also the RIPEMD-160 web page for more information: hhtp://www.esat.kuleuven.ac.be/~bosselae/ripemd160.html