September 24, 2005 MD2 3

### NAME

MD2Init, MD2Update, MD2Final, MD2End, MD2File, MD2Data - calculate the RSA Data Security, Inc., ``MD2'' message digest

### LIBRARY

Standard C Library (libc, -lc)

### SYNOPSIS

```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

md2(3),

### HISTORY

These functions appeared in NetBSD1.3.

### AUTHORS

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.