MD5(3)

NAME
MD5Init, MD5Update, MD5Final, MD5End, MD5File, MD5Data - calculate the RSA Data Security, Inc., ``MD5'' message digest

SYNOPSIS
#include <sys/types.h>
#include <minix/md5.h>
void
MD5Init(MD5_CTX *context);
void
MD5Update(MD5_CTX *context, const u_int8_t *data, size_t len);
void
MD5Final(u_int8_t digest[MD5_DIGEST_LENGTH], MD5_CTX *context);
char *
MD5End(MD5_CTX *context, char *buf);
char *
MD5File(const char *filename, char *buf);
char *
MD5Data(const u_int8_t *data, size_t len, char *buf);

DESCRIPTION
The MD5 functions calculate a 128-bit cryptographic checksum (digest) for any number of input bytes. A cryptographic checksum is a one-way hash-function, that is, you cannot find (except by exhaustive search) the input corresponding to a particular output. This net result is a “fingerprint” of the input-data, which doesn't disclose the actual input.

The MD5Init(), MD5Update(), and MD5Final() functions are the core functions. Allocate an MD5_CTX, initialize it with MD5Init(), run over the data with MD5Update(), and finally extract the result using MD5Final().

MD5End() is a wrapper for MD5Final() which converts the return value to an MD5_DIGEST_STRING_LENGTH-character (including the terminating '\0') ASCII string which represents the 128 bits in hexadecimal.

MD5File() calculates the digest of a file, and uses MD5End() to return the result. If the file cannot be opened, a null pointer is returned.

MD5Data() calculates the digest of a chunk of data in memory, and uses MD5End() to return the result.

When using MD5End(), MD5File(), or MD5Data(), the buf argument can be a null pointer, in which case the returned string is allocated with malloc(3) and subsequently must be explicitly deallocated using free(3) after use. If the buf argument is non-null it must point to at least MD5_DIGEST_STRING_LENGTH characters of buffer space. R. Rivest, The MD4 Message-Digest Algorithm, RFC 1186. R. Rivest, The MD5 Message-Digest Algorithm, RFC 1321. RSA Laboratories, Frequently Asked Questions About today's Cryptography, <http://www.rsa.com/rsalabs/faq/>. H. Dobbertin, Alf Swindles Ann, CryptoBytes, 1(3):5, 1995. MJ. B. Robshaw, On Recent Results for MD4 and MD5, RSA Laboratories Bulletin, 4, November 12, 1996. Hans Dobbertin, Cryptanalysis of MD5 Compress.

BUGS
Collisions have been found for the full version of MD5.