MD2(3)

MD2(3) | Library Functions Manual | 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

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

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.

September 24, 2005 | NetBSD 9.5