md4(3)

NAME

MD4Init, MD4Update, MD4Pad, MD4Final, MD4End, MD4File,

MD4FileChunk

MD4Data - calculate the RSA Data Security, Inc., ``MD4''
message digest

LIBRARY

library ``libmd''

SYNOPSIS

#include <sys/types.h>
#include <md4.h>
void
MD4Init(MD4_CTX *context);
void
MD4Update(MD4_CTX  *context,  const  unsigned  char   *data,
unsigned int len);
void
MD4Pad(MD4_CTX *context);
void
MD4Final(unsigned char digest[16], MD4_CTX *context);
char *
MD4End(MD4_CTX *context, char *buf);
char *
MD4File(const char *filename, char *buf);
char *
MD4FileChunk(const char *filename, char *buf, off_t offset,
        off_t length);
char *
MD4Data(const  unsigned  char  *data, unsigned int len, char
*buf);

DESCRIPTION

The MD4 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 MD4Init(), MD4Update(), and MD4Final() functions are the
core functions. Allocate an MD4_CTX, initialize it with MD4Init(),
run over the
data with MD4Update(), and finally extract the result using

MD4Final

The MD4Pad() function can be used to pad message data in
same way as done
by MD4Final() without terminating calculation.
The MD4End() function is a wrapper for MD4Final() which con
verts the
return value to a 33-character (including the terminating
string which represents the 128 bits in hexadecimal.
The MD4File() function calculates the digest of a file, and
uses MD4End()
to return the result. If the file cannot be opened, a null
pointer is
returned. The MD4FileChunk() function is similar to

MD4File

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, MD4FileChunk() calculates the digest from offset to
the end of
file. The MD4Data() function calculates the digest of a
chunk of data in
memory, and uses MD4End() to return the result.
When using MD4End(), MD4File(), or MD4Data(), 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 MD4 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. MD4 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.
MD4 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
Copyright © 2010-2025 Platon Technologies, s.r.o.           Home | Man pages | tLDP | Documents | Utilities | About
Design by styleshout