2 ''' $RCSfile$$Revision$$Date$
20 .ie \\n(.$>=3 .ne \\$3
36 ''' Set up \*(-- to give an unbreakable dash;
37 ''' string Tr holds user defined translation string.
38 ''' Bell System Logo is used as a dummy character.
44 .if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
45 .if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
48 ''' \*(M", \*(S", \*(N" and \*(T" are the equivalent of
49 ''' \*(L" and \*(R", except that they are used on ".xx" lines,
50 ''' such as .IP and .SH, which do another additional levels of
51 ''' double-quote interpretation
80 .\" If the F register is turned on, we'll generate
81 .\" index entries out stderr for the following things:
86 .\" X<> Xref (embedded
87 .\" Of course, you have to process the output yourself
88 .\" in some meaninful fashion.
91 .tm Index:\\$1\t\\n%\t"\\$2"
96 .TH md5 3 "0.9.7d" "2/Sep/2004" "OpenSSL"
100 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
101 .de CQ \" put $1 in typewriter font
107 \\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7
110 .\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2
111 . \" AM - accent mark definitions
113 . \" fudge factors for nroff and troff
122 . ds #H ((1u-(\\\\n(.fu%2u))*.13m)
128 . \" simple accents for nroff and troff
141 . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
142 . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
143 . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
144 . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
145 . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
146 . ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10'
147 . ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m'
148 . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
149 . ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10'
151 . \" troff and (daisy-wheel) nroff accents
152 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
153 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
154 .ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#]
155 .ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u'
156 .ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u'
157 .ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#]
158 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
159 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
160 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
161 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
162 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
163 .ds ae a\h'-(\w'a'u*4/10)'e
164 .ds Ae A\h'-(\w'A'u*4/10)'E
165 .ds oe o\h'-(\w'o'u*4/10)'e
166 .ds Oe O\h'-(\w'O'u*4/10)'E
167 . \" corrections for vroff
168 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
169 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
170 . \" for low resolution devices (crt and lpr)
171 .if \n(.H>23 .if \n(.V>19 \
175 . ds v \h'-1'\o'\(aa\(ga'
191 MD2, MD4, MD5, MD2_Init, MD2_Update, MD2_Final, MD4_Init, MD4_Update,
192 MD4_Final, MD5_Init, MD5_Update, MD5_Final \- MD2, MD4, and MD5 hash functions
196 \& #include <openssl/md2.h>
199 \& unsigned char *MD2(const unsigned char *d, unsigned long n,
200 \& unsigned char *md);
203 \& void MD2_Init(MD2_CTX *c);
204 \& void MD2_Update(MD2_CTX *c, const unsigned char *data,
205 \& unsigned long len);
206 \& void MD2_Final(unsigned char *md, MD2_CTX *c);
209 \& #include <openssl/md4.h>
212 \& unsigned char *MD4(const unsigned char *d, unsigned long n,
213 \& unsigned char *md);
216 \& void MD4_Init(MD4_CTX *c);
217 \& void MD4_Update(MD4_CTX *c, const void *data,
218 \& unsigned long len);
219 \& void MD4_Final(unsigned char *md, MD4_CTX *c);
222 \& #include <openssl/md5.h>
225 \& unsigned char *MD5(const unsigned char *d, unsigned long n,
226 \& unsigned char *md);
229 \& void MD5_Init(MD5_CTX *c);
230 \& void MD5_Update(MD5_CTX *c, const void *data,
231 \& unsigned long len);
232 \& void MD5_Final(unsigned char *md, MD5_CTX *c);
235 MD2, MD4, and MD5 are cryptographic hash functions with a 128 bit output.
237 \fIMD2()\fR, \fIMD4()\fR, and \fIMD5()\fR compute the MD2, MD4, and MD5 message digest
238 of the \fBn\fR bytes at \fBd\fR and place it in \fBmd\fR (which must have space
239 for MD2_DIGEST_LENGTH == MD4_DIGEST_LENGTH == MD5_DIGEST_LENGTH == 16
240 bytes of output). If \fBmd\fR is NULL, the digest is placed in a static
243 The following functions may be used if the message is not completely
246 \fIMD2_Init()\fR initializes a \fBMD2_CTX\fR structure.
248 \fIMD2_Update()\fR can be called repeatedly with chunks of the message to
249 be hashed (\fBlen\fR bytes at \fBdata\fR).
251 \fIMD2_Final()\fR places the message digest in \fBmd\fR, which must have space
252 for MD2_DIGEST_LENGTH == 16 bytes of output, and erases the \fBMD2_CTX\fR.
254 \fIMD4_Init()\fR, \fIMD4_Update()\fR, \fIMD4_Final()\fR, \fIMD5_Init()\fR, \fIMD5_Update()\fR, and
255 \fIMD5_Final()\fR are analogous using an \fBMD4_CTX\fR and \fBMD5_CTX\fR structure.
257 Applications should use the higher level functions
259 etc. instead of calling the hash functions directly.
261 MD2, MD4, and MD5 are recommended only for compatibility with existing
262 applications. In new applications, SHA\-1 or RIPEMD\-160 should be
265 \fIMD2()\fR, \fIMD4()\fR, and \fIMD5()\fR return pointers to the hash value.
267 \fIMD2_Init()\fR, \fIMD2_Update()\fR, \fIMD2_Final()\fR, \fIMD4_Init()\fR, \fIMD4_Update()\fR,
268 \fIMD4_Final()\fR, \fIMD5_Init()\fR, \fIMD5_Update()\fR, and \fIMD5_Final()\fR do not return
271 RFC 1319, RFC 1320, RFC 1321
273 sha(3), ripemd(3), EVP_DigestInit(3)
275 \fIMD2()\fR, \fIMD2_Init()\fR, \fIMD2_Update()\fR \fIMD2_Final()\fR, \fIMD5()\fR, \fIMD5_Init()\fR,
276 \fIMD5_Update()\fR and \fIMD5_Final()\fR are available in all versions of SSLeay
279 \fIMD4()\fR, \fIMD4_Init()\fR, and \fIMD4_Update()\fR are available in OpenSSL 0.9.6 and
284 .IX Name "MD2, MD4, MD5, MD2_Init, MD2_Update, MD2_Final, MD4_Init, MD4_Update,
285 MD4_Final, MD5_Init, MD5_Update, MD5_Final - MD2, MD4, and MD5 hash functions"
289 .IX Header "SYNOPSIS"
291 .IX Header "DESCRIPTION"
295 .IX Header "RETURN VALUES"
297 .IX Header "CONFORMING TO"
299 .IX Header "SEE ALSO"