MD2
Section: C Library Functions (3)
Index
Return to Main Contents
BSD mandoc
NAME
MD2Init
MD2Update
MD2Pad
MD2Final
MD2Transform
MD2End
MD2File
MD2FileChunk
MD2Data
- calculate the RSA Data Security, Inc.,
``MD2''
message digest
LIBRARY
Lb libmd
SYNOPSIS
In sys/types.h
In md2.h
Ft void
Fn MD2Init MD2_CTX *context
Ft void
Fn MD2Update MD2_CTX *context const uint8_t *data size_t len
Ft void
Fn MD2Pad MD2_CTX *context
Ft void
Fn MD2Final uint8_t digest[MD2_DIGEST_LENGTH] MD2_CTX *context
Ft void
Fn MD2Transform uint32_t state[4] uint8_t block[MD2_BLOCK_LENGTH]
Ft char *
Fn MD2End MD2_CTX *context char *buf
Ft char *
Fn MD2File const char *filename char *buf
Ft char *
Fn MD2FileChunk const char *filename char *buf off_t offset off_t length
Ft char *
Fn MD2Data const uint8_t *data size_t len char *buf
DESCRIPTION
The MD2 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 MD2Init ,
Fn MD2Update ,
and
Fn MD2Final
functions are the core functions.
Allocate an MD2_CTX, initialize it with
Fn MD2Init ,
run over the data with
Fn MD2Update ,
and finally extract the result using
Fn MD2Final .
The
Fn MD2Pad
function can be used to apply padding to the message digest as in
Fn MD2Final ,
but the current context can still be used with
Fn MD2Update .
The
Fn MD2Transform
function is used by
Fn MD2Update
to hash 51-bit blocks and forms the core of the algorithm.
Most programs should use the interface provided by
Fn MD2Init ,
Fn MD2Update
and
Fn MD2Final
instead of calling
Fn MD2Transform
directly.
Fn MD2End
is a wrapper for
Fn MD2Final
which converts the return value to an MD2_DIGEST_STRING_LENGT-character
(including the terminating '0')
ASCII
string which represents the 128 bits in hexadecimal.
Fn MD2File
calculates the digest of a file, and uses
Fn MD2End
to return the result.
If the file cannot be opened, a null pointer is returned.
Fn MD2FileChunk
behaves like
Fn MD2File
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 MD2Data
calculates the digest of a chunk of data in memory, and uses
Fn MD2End
to return the result.
When using
Fn MD2End ,
Fn MD2File ,
Fn MD2FileChunk ,
or
Fn 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 no-null it must point to at least MD2_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 MD2 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 MD2End ,
Fn MD2File ,
Fn MD2FileChunk ,
and
Fn MD2Data
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
-