md5(3)
NAME
MD5Init, MD5Update, MD5Pad, MD5Final, MD5End, MD5File,
MD5FileChunk
- MD5Data - calculate the RSA Data Security, Inc., ``MD5''
- message digest
LIBRARY
library ``libmd''
SYNOPSIS
#include <sys/types.h> #include <md5.h> void MD5Init(MD5_CTX *context); void MD5Update(MD5_CTX *context, const unsigned char *data, unsigned int len); void MD5Pad(MD5_CTX *context); void MD5Final(unsigned char digest[16], MD5_CTX *context); char * MD5End(MD5_CTX *context, char *buf); char * MD5File(const char *filename, char *buf); char * MD5FileChunk(const char *filename, char *buf, off_t offset, off_t length); char * MD5Data(const unsigned char *data, unsigned int 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 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 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
- The MD5Pad() function can be used to pad message data in
- same way as done
by MD5Final() without terminating calculation. - The MD5End() function is a wrapper for MD5Final() which con
- verts the
return value to a 33-character (including the terminating
string which represents the 128 bits in hexadecimal. - The MD5File() function calculates the digest of a file, and
- uses MD5End()
to return the result. If the file cannot be opened, a null - pointer is
returned. The MD5FileChunk() function is similar to
MD5File
- 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, MD5FileChunk() calculates the digest from offset to - the end of
file. The MD5Data() function 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 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 MD5 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) - 1991-2, RSA Data
Security, Inc. Created 1991. All rights reserved. - License to copy and use this software is granted provided
- that it is
identified as the "RSA Data Security, Inc. MD5 Message-Di - gest Algorithm"
in all material mentioning or referencing this software or - this function.
- License is also granted to make and use derivative works
- provided that
such works are identified as "derived from the RSA Data Se - curity, Inc.
MD5 Message-Digest Algorithm" in all material mentioning or - referencing
the derived work. - 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