140 lines
3.7 KiB
Groff
140 lines
3.7 KiB
Groff
.\" $NetBSD: mdX.3,v 1.6 2001/09/16 03:01:43 wiz Exp $
|
|
.\"
|
|
.\" ----------------------------------------------------------------------------
|
|
.\" "THE BEER-WARE LICENSE" (Revision 42):
|
|
.\" <phk@login.dkuug.dk> wrote this file. As long as you retain this notice you
|
|
.\" can do whatever you want with this stuff. If we meet some day, and you think
|
|
.\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
|
|
.\" ----------------------------------------------------------------------------
|
|
.\"
|
|
.\" from FreeBSD Id: mdX.3,v 1.7 1996/10/22 16:28:56 phk Exp
|
|
.\"
|
|
.Dd October 9, 1996
|
|
.Dt MDX 3
|
|
.Os
|
|
.Sh NAME
|
|
.Nm MDXInit ,
|
|
.Nm MDXUpdate ,
|
|
.Nm MDXFinal ,
|
|
.Nm MDXEnd ,
|
|
.Nm MDXFile ,
|
|
.Nm MDXData
|
|
.Nd calculate the RSA Data Security, Inc.,
|
|
.Dq MDX
|
|
message digest
|
|
.Sh LIBRARY
|
|
.Lb libc
|
|
.Sh SYNOPSIS
|
|
.Fd #include <sys/types.h>
|
|
.Fd #include <mdX.h>
|
|
.Ft void
|
|
.Fn MDXInit "MDX_CTX *context"
|
|
.Ft void
|
|
.Fn MDXUpdate "MDX_CTX *context" "unsigned char *data" "unsigned int len"
|
|
.Ft void
|
|
.Fn MDXFinal "unsigned char digest[16]" "MDX_CTX *context"
|
|
.Ft "char *"
|
|
.Fn MDXEnd "MDX_CTX *context" "char *buf"
|
|
.Ft "char *"
|
|
.Fn MDXFile "char *filename" "char *buf"
|
|
.Ft "char *"
|
|
.Fn MDXData "unsigned char *data" "unsigned int len" "char *buf"
|
|
.Sh DESCRIPTION
|
|
The MDX functions calculate a 128-bit cryptographic checksum (digest)
|
|
for any number of input bytes. A cryptographic checksum is a one-way
|
|
hash-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 input-data, which doesn't disclose the actual
|
|
input.
|
|
.Pp
|
|
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 been criticized for being too weak, so MD5 was developed in
|
|
response as ``MD4 with safety-belts''. When in doubt, use MD5.
|
|
.Pp
|
|
The
|
|
.Fn MDXInit ,
|
|
.Fn MDXUpdate ,
|
|
and
|
|
.Fn MDXFinal
|
|
functions are the core functions. Allocate an MDX_CTX, initialize it with
|
|
.Fn MDXInit ,
|
|
run over the data with
|
|
.Fn MDXUpdate ,
|
|
and finally extract the result using
|
|
.Fn MDXFinal .
|
|
.Pp
|
|
.Fn MDXEnd
|
|
is a wrapper for
|
|
.Fn MDXFinal
|
|
which converts the return value to a 33-character
|
|
(including the terminating '\e0')
|
|
.Tn ASCII
|
|
string which represents the 128 bits in hexadecimal.
|
|
.Pp
|
|
.Fn MDXFile
|
|
calculates the digest of a file, and uses
|
|
.Fn MDXEnd
|
|
to return the result.
|
|
If the file cannot be opened, a null pointer is returned.
|
|
.Fn MDXData
|
|
calculates the digest of a chunk of data in memory, and uses
|
|
.Fn MDXEnd
|
|
to return the result.
|
|
.Pp
|
|
When using
|
|
.Fn MDXEnd ,
|
|
.Fn MDXFile ,
|
|
or
|
|
.Fn MDXData ,
|
|
the
|
|
.Ar buf
|
|
argument can be a null pointer, in which case the returned string
|
|
is allocated with
|
|
.Xr malloc 3
|
|
and subsequently must be explicitly deallocated using
|
|
.Xr free 3
|
|
after use.
|
|
If the
|
|
.Ar buf
|
|
argument is non-null it must point to at least 33 characters of buffer space.
|
|
.Sh SEE ALSO
|
|
.Xr md2 3 ,
|
|
.Xr md4 3 ,
|
|
.Xr md5 3
|
|
.Rs
|
|
.%A B. Kaliski
|
|
.%T The MD2 Message-Digest Algorithm
|
|
.%O RFC 1319
|
|
.Re
|
|
.Rs
|
|
.%A R. Rivest
|
|
.%T The MD4 Message-Digest Algorithm
|
|
.%O RFC 1186
|
|
.Re
|
|
.Rs
|
|
.%A R. Rivest
|
|
.%T The MD5 Message-Digest Algorithm
|
|
.%O RFC 1321
|
|
.Re
|
|
.Rs
|
|
.%A RSA Laboratories
|
|
.%T Frequently Asked Questions About today's Cryptography
|
|
.Re
|
|
.Sh HISTORY
|
|
These functions appeared in
|
|
.Nx 1.3 .
|
|
.Sh AUTHORS
|
|
The original MDX routines were developed by
|
|
.Tn RSA
|
|
Data Security, Inc., and published in the above references.
|
|
This code is derived directly from these implementations by Poul-Henning Kamp
|
|
.Aq Li phk@login.dkuug.dk
|
|
.Pp
|
|
Phk ristede runen.
|
|
.Sh 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 doesn't exist.
|
|
.Sh COPYRIGHT
|