RIPEMD-160 specification and software

We provide specification 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. Please observe the conditions of use for this software. Any comments on the specification or the implementation can be mailed to Antoon Bosselaers. For more information on all aspects of RIPEMD-160 and RIPEMD-128 we refer you to the RIPEMD-160 web page .

Specification and software for RIPEMD-160 and RIPEMD-128

AB-9601.pdf (AB-9601.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 π and ρ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.

Software for MDx-MACs based on RIPEMD-160 and RIPEMD-128

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