md2(3)
NAME
MD2Init, MD2Update, MD2Pad, MD2Final, MD2End, MD2File,
MD2FileChunk
- MD2Data - calculate the RSA Data Security, Inc., ``MD2''
- message digest
LIBRARY
library ``libmd''
SYNOPSIS
#include <sys/types.h> #include <md2.h> void MD2Init(MD2_CTX *context); void MD2Update(MD2_CTX *context, const unsigned char *data, unsigned int len); void MD2Pad(MD2_CTX *context); void MD2Final(unsigned char digest[16], MD2_CTX *context); char * MD2End(MD2_CTX *context, char *buf); char * MD2File(const char *filename, char *buf); char * MD2FileChunk(const char *filename, char *buf, off_t offset, off_t length); 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 hashfunction, 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 does not disclose - the actual
input. - MD2 is the slowest, MD4 is the fastest and MD5 is somewhere
- in the middle. MD2 can only be used for Privacy-Enhanced Mail. MD4
- has now been
broken; it should only be used where necessary for backward - compatibility. MD5 has not yet (1999-02-11) been broken, but suffi
- cient attacks
have been made that its security is in some doubt. The at - tacks on both
MD4 and MD5 are both in the nature of finding ``collisions'' - - that is,
multiple inputs which hash to the same value; it is still - unlikely for an
attacker to be able to determine the exact original input - given a hash
value. - 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
- The MD2Pad() function can be used to pad message data in
- same way as done
by MD2Final() without terminating calculation. - The MD2End() function is a wrapper for MD2Final() which con
- verts the
return value to a 33-character (including the terminating
string which represents the 128 bits in hexadecimal. - The MD2File() function calculates the digest of a file, and
- uses MD2End()
to return the result. If the file cannot be opened, a null - pointer is
returned. The MD2FileChunk() function is similar to
MD2File
- only calculates the digest over a byte-range of the file
- specified,
starting at offset and spanning length bytes. If the length - parameter is
specified as 0, or more than the length of the remaining - part of the
file, MD2FileChunk() calculates the digest from offset to - the end of
file. The MD2Data() function 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 argu
- ment 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), md4(3), md5(3), sha(3)
B. Kaliski, The MD2 Message-Digest Algorithm, RFC 1319.
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 MD2, MD4 and MD5",
- RSA
Laboratories Bulletin, 4, November 12, 1996.
HISTORY
These functions appeared in FreeBSD 2.0.
AUTHORS
- The original MD2 routines were developed by RSA Data Securi
- ty, Inc., and
published in the above references. This code is derived di - rectly from
these implementations by Poul-Henning Kamp <phk@FreeBSD.org> - Phk ristede runen.
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 does not exist. - MD2 has only been licensed for use in Privacy Enhanced Mail.
- Use MD4 or
MD5 if that is not what you are doing. Copyright (C) - 1990-2, RSA Data
Security, Inc. Created 1990. All rights reserved. - License to copy and use this software is granted for non
- commercial
Internet Privacy-Enhanced Mail provided that it is identi - fied as the "RSA
Data Security, Inc. MD2 Message Digest Algorithm" in all ma - terial mentioning or referencing this software or this function.
- RSA Data Security, Inc. makes no representations concerning
- either the
merchantability of this software or the suitability of this - software for
any particular purpose. It is provided "as is" without ex - press or implied
warranty of any kind. - These notices must be retained in any copies of any part of
- this documentation and/or software.
- BSD February 11, 1999