1*e71b7053SJung-uk Kim=pod 2*e71b7053SJung-uk Kim 3*e71b7053SJung-uk Kim=head1 NAME 4*e71b7053SJung-uk Kim 5*e71b7053SJung-uk KimMD2, MD4, MD5, MD2_Init, MD2_Update, MD2_Final, MD4_Init, MD4_Update, 6*e71b7053SJung-uk KimMD4_Final, MD5_Init, MD5_Update, MD5_Final - MD2, MD4, and MD5 hash functions 7*e71b7053SJung-uk Kim 8*e71b7053SJung-uk Kim=head1 SYNOPSIS 9*e71b7053SJung-uk Kim 10*e71b7053SJung-uk Kim #include <openssl/md2.h> 11*e71b7053SJung-uk Kim 12*e71b7053SJung-uk Kim unsigned char *MD2(const unsigned char *d, unsigned long n, unsigned char *md); 13*e71b7053SJung-uk Kim 14*e71b7053SJung-uk Kim int MD2_Init(MD2_CTX *c); 15*e71b7053SJung-uk Kim int MD2_Update(MD2_CTX *c, const unsigned char *data, unsigned long len); 16*e71b7053SJung-uk Kim int MD2_Final(unsigned char *md, MD2_CTX *c); 17*e71b7053SJung-uk Kim 18*e71b7053SJung-uk Kim 19*e71b7053SJung-uk Kim #include <openssl/md4.h> 20*e71b7053SJung-uk Kim 21*e71b7053SJung-uk Kim unsigned char *MD4(const unsigned char *d, unsigned long n, unsigned char *md); 22*e71b7053SJung-uk Kim 23*e71b7053SJung-uk Kim int MD4_Init(MD4_CTX *c); 24*e71b7053SJung-uk Kim int MD4_Update(MD4_CTX *c, const void *data, unsigned long len); 25*e71b7053SJung-uk Kim int MD4_Final(unsigned char *md, MD4_CTX *c); 26*e71b7053SJung-uk Kim 27*e71b7053SJung-uk Kim 28*e71b7053SJung-uk Kim #include <openssl/md5.h> 29*e71b7053SJung-uk Kim 30*e71b7053SJung-uk Kim unsigned char *MD5(const unsigned char *d, unsigned long n, unsigned char *md); 31*e71b7053SJung-uk Kim 32*e71b7053SJung-uk Kim int MD5_Init(MD5_CTX *c); 33*e71b7053SJung-uk Kim int MD5_Update(MD5_CTX *c, const void *data, unsigned long len); 34*e71b7053SJung-uk Kim int MD5_Final(unsigned char *md, MD5_CTX *c); 35*e71b7053SJung-uk Kim 36*e71b7053SJung-uk Kim=head1 DESCRIPTION 37*e71b7053SJung-uk Kim 38*e71b7053SJung-uk KimMD2, MD4, and MD5 are cryptographic hash functions with a 128 bit output. 39*e71b7053SJung-uk Kim 40*e71b7053SJung-uk KimMD2(), MD4(), and MD5() compute the MD2, MD4, and MD5 message digest 41*e71b7053SJung-uk Kimof the B<n> bytes at B<d> and place it in B<md> (which must have space 42*e71b7053SJung-uk Kimfor MD2_DIGEST_LENGTH == MD4_DIGEST_LENGTH == MD5_DIGEST_LENGTH == 16 43*e71b7053SJung-uk Kimbytes of output). If B<md> is NULL, the digest is placed in a static 44*e71b7053SJung-uk Kimarray. 45*e71b7053SJung-uk Kim 46*e71b7053SJung-uk KimThe following functions may be used if the message is not completely 47*e71b7053SJung-uk Kimstored in memory: 48*e71b7053SJung-uk Kim 49*e71b7053SJung-uk KimMD2_Init() initializes a B<MD2_CTX> structure. 50*e71b7053SJung-uk Kim 51*e71b7053SJung-uk KimMD2_Update() can be called repeatedly with chunks of the message to 52*e71b7053SJung-uk Kimbe hashed (B<len> bytes at B<data>). 53*e71b7053SJung-uk Kim 54*e71b7053SJung-uk KimMD2_Final() places the message digest in B<md>, which must have space 55*e71b7053SJung-uk Kimfor MD2_DIGEST_LENGTH == 16 bytes of output, and erases the B<MD2_CTX>. 56*e71b7053SJung-uk Kim 57*e71b7053SJung-uk KimMD4_Init(), MD4_Update(), MD4_Final(), MD5_Init(), MD5_Update(), and 58*e71b7053SJung-uk KimMD5_Final() are analogous using an B<MD4_CTX> and B<MD5_CTX> structure. 59*e71b7053SJung-uk Kim 60*e71b7053SJung-uk KimApplications should use the higher level functions 61*e71b7053SJung-uk KimL<EVP_DigestInit(3)> 62*e71b7053SJung-uk Kimetc. instead of calling the hash functions directly. 63*e71b7053SJung-uk Kim 64*e71b7053SJung-uk Kim=head1 NOTE 65*e71b7053SJung-uk Kim 66*e71b7053SJung-uk KimMD2, MD4, and MD5 are recommended only for compatibility with existing 67*e71b7053SJung-uk Kimapplications. In new applications, SHA-1 or RIPEMD-160 should be 68*e71b7053SJung-uk Kimpreferred. 69*e71b7053SJung-uk Kim 70*e71b7053SJung-uk Kim=head1 RETURN VALUES 71*e71b7053SJung-uk Kim 72*e71b7053SJung-uk KimMD2(), MD4(), and MD5() return pointers to the hash value. 73*e71b7053SJung-uk Kim 74*e71b7053SJung-uk KimMD2_Init(), MD2_Update(), MD2_Final(), MD4_Init(), MD4_Update(), 75*e71b7053SJung-uk KimMD4_Final(), MD5_Init(), MD5_Update(), and MD5_Final() return 1 for 76*e71b7053SJung-uk Kimsuccess, 0 otherwise. 77*e71b7053SJung-uk Kim 78*e71b7053SJung-uk Kim=head1 CONFORMING TO 79*e71b7053SJung-uk Kim 80*e71b7053SJung-uk KimRFC 1319, RFC 1320, RFC 1321 81*e71b7053SJung-uk Kim 82*e71b7053SJung-uk Kim=head1 SEE ALSO 83*e71b7053SJung-uk Kim 84*e71b7053SJung-uk KimL<EVP_DigestInit(3)> 85*e71b7053SJung-uk Kim 86*e71b7053SJung-uk Kim=head1 COPYRIGHT 87*e71b7053SJung-uk Kim 88*e71b7053SJung-uk KimCopyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. 89*e71b7053SJung-uk Kim 90*e71b7053SJung-uk KimLicensed under the OpenSSL license (the "License"). You may not use 91*e71b7053SJung-uk Kimthis file except in compliance with the License. You can obtain a copy 92*e71b7053SJung-uk Kimin the file LICENSE in the source distribution or at 93*e71b7053SJung-uk KimL<https://www.openssl.org/source/license.html>. 94*e71b7053SJung-uk Kim 95*e71b7053SJung-uk Kim=cut 96