MD2(3)

NAME
MD2Init, MD2Update, MD2Final, MD2End, MD2File, MD2Data - calculate the RSA Data Security, Inc., “MD2” message digest

LIBRARY
libc

SYNOPSIS
#include <sys/types.h>
#include <mdX.h>
void
MD2Init(MD2_CTX *context);
void
MD2Update(MD2_CTX *context, const unsigned char *data, unsigned int len);
void
MD2Final(unsigned char digest[16], MD2_CTX *context);
char *
MD2End(MD2_CTX *context, char *buf);
char *
MD2File(const char *filename, char *buf);
char *
MD2Data(const unsigned char *data, unsigned int len, char *buf);

DESCRIPTION
The MD2 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 MD2 routines should not be used for any security-related purpose.

The MD2Init(), MD2Update(), and MD2Final() functions are the core functions. Allocate an MD2_CTX, initialize it with MD2Init(), run over the data with MD2Update(), and finally extract the result using MD2Final().

MD2End() is a wrapper for MD2Final() which converts the return value to a 33-character (including the terminating '\0') ASCII string which represents the 128 bits in hexadecimal.

MD2File() calculates the digest of a file, and uses MD2End() to return the result. If the file cannot be opened, a null pointer is returned. MD2Data() calculates the digest of a chunk of data in memory, and uses MD2End() to return the result.

When using MD2End(), MD2File(), or MD2Data(), 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 33 characters of buffer space.

SEE ALSO
md4(3), md5(3), openssl_MD2(3), openssl_MD4(3), openssl_MD5(3), B. Kaliski, The MD2 Message-Digest Algorithm, RFC 1319. RSA Laboratories, Frequently Asked Questions About today's Cryptography.

HISTORY
These functions appeared in NetBSD 1.3.

AUTHORS
-nosplit The original MD2 routines were developed by RSA Data Security, Inc., and published in the above references. This code is a public domain implementation by Andrew Brown.

BUGS
No method is known to exist which finds two files having the same hash value, nor to find a file with a specific hash value. There is on the other hand no guarantee that such a method doesn't exist.