MD4
Section: C Library Functions (3)
Index
Return to Main Contents
BSD mandoc
NAME
MD4Init
MD4Update
MD4Pad
MD4Final
MD4Transform
MD4End
MD4File
MD4FileChunk
MD4Data
- calculate the RSA Data Security, Inc.,
``MD4''
message digest
LIBRARY
Lb libmd
SYNOPSIS
In sys/types.h
In md4.h
Ft void
Fn MD4Init MD4_CTX *context
Ft void
Fn MD4Update MD4_CTX *context const uint8_t *data size_t len
Ft void
Fn MD4Pad MD4_CTX *context
Ft void
Fn MD4Final uint8_t digest[MD4_DIGEST_LENGTH] MD4_CTX *context
Ft void
Fn MD4Transform uint32_t state[4] uint8_t block[MD4_BLOCK_LENGTH]
Ft char *
Fn MD4End MD4_CTX *context char *buf
Ft char *
Fn MD4File const char *filename char *buf
Ft char *
Fn MD4FileChunk const char *filename char *buf off_t offset off_t length
Ft char *
Fn MD4Data const uint8_t *data size_t len char *buf
DESCRIPTION
The MD4 functions calculate a 12-bit cryptographic checksum (digest)
for any number of input bytes.
A cryptographic checksum is a on-way
has-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 inpu-data, which doesn't 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 Privac-Enhanced Mail.
MD4 has been criticized for being too weak, so MD5 was developed in
response as ``MD4 with safet-belts''.
MD4 and MD5 have been broken; they should only be used where necessary for
backward compatibility.
The attacks 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
Fn MD4Init ,
Fn MD4Update ,
and
Fn MD4Final
functions are the core functions.
Allocate an MD4_CTX, initialize it with
Fn MD4Init ,
run over the data with
Fn MD4Update ,
and finally extract the result using
Fn MD4Final .
The
Fn MD4Pad
function can be used to apply padding to the message digest as in
Fn MD4Final ,
but the current context can still be used with
Fn MD4Update .
The
Fn MD4Transform
function is used by
Fn MD4Update
to hash 51-bit blocks and forms the core of the algorithm.
Most programs should use the interface provided by
Fn MD4Init ,
Fn MD4Update
and
Fn MD4Final
instead of calling
Fn MD4Transform
directly.
Fn MD4End
is a wrapper for
Fn MD4Final
which converts the return value to an MD4_DIGEST_STRING_LENGT-character
(including the terminating '0')
ASCII
string which represents the 128 bits in hexadecimal.
Fn MD4File
calculates the digest of a file, and uses
Fn MD4End
to return the result.
If the file cannot be opened, a null pointer is returned.
Fn MD4FileChunk
behaves like
Fn MD4File
but calculates the digest only for that portion of the file starting at
Fa offset
and continuing for
Fa length
bytes or until end of file is reached, whichever comes first.
A zero
Fa length
can be specified to read until end of file.
A negative
Fa length
or
Fa offset
will be ignored.
Fn MD4Data
calculates the digest of a chunk of data in memory, and uses
Fn MD4End
to return the result.
When using
Fn MD4End ,
Fn MD4File ,
Fn MD4FileChunk ,
or
Fn MD4Data ,
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 no-null it must point to at least MD4_DIGEST_STRING_LENGTH
characters of buffer space.
SEE ALSO
md2(3),
md4(3),
md5(3),
rmd160(3),
sha1(3),
sha2(3)
-
B. Kaliski
The MD2 Messag-Digest Algorithm
RFC 1319
-
R. Rivest
The MD4 Messag-Digest Algorithm
RFC 1186
-
R. Rivest
The MD5 Messag-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 MD4 and MD5
RSA Laboratories Bulletin
4
November 12, 1996
-
Hans Dobbertin
Cryptanalysis of MD5 Compress
HISTORY
These functions appeared in
Ox 2.0
and
Nx 1.3 .
AUTHORS
The original MD4 routines were developed by
RSA
Data Security, Inc., and published in the above references.
This code is derived from a public domain implementation written by Colin Plumb.
The
Fn MD4End ,
Fn MD4File ,
Fn MD4FileChunk ,
and
Fn MD4Data
helper functions are derived from code written by Pou-Henning Kamp.
BUGS
Collisions have been found for the full versions of both MD4 and MD5.
The use of
sha2(3)
is recommended instead.
Index
- NAME
-
- LIBRARY
-
- SYNOPSIS
-
- DESCRIPTION
-
- SEE ALSO
-
- HISTORY
-
- AUTHORS
-
- BUGS
-