md5 3 2007-03-06 0.9.9-dev OpenSSL

NAME

MD2, MD4, MD5, MD2_Init, MD2_Update, MD2_Final, MD4_Init, MD4_Update, MD4_Final, MD5_Init, MD5_Update, MD5_Final - MD2, MD4, and MD5 hash functions

LIBRARY

libcrypto, -lcrypto

SYNOPSIS


 #include 


 unsigned char *MD2(const unsigned char *d, unsigned long n,
                  unsigned char *md);


 int MD2_Init(MD2_CTX *c);
 int MD2_Update(MD2_CTX *c, const unsigned char *data,
                  unsigned long len);
 int MD2_Final(unsigned char *md, MD2_CTX *c);


 #include 


 unsigned char *MD4(const unsigned char *d, unsigned long n,
                  unsigned char *md);





 int MD4_Init(MD4_CTX *c);
 int MD4_Update(MD4_CTX *c, const void *data,
                  unsigned long len);
 int MD4_Final(unsigned char *md, MD4_CTX *c);


 #include 


 unsigned char *MD5(const unsigned char *d, unsigned long n,
                  unsigned char *md);


 int MD5_Init(MD5_CTX *c);
 int MD5_Update(MD5_CTX *c, const void *data,
                  unsigned long len);
 int MD5_Final(unsigned char *md, MD5_CTX *c);

DESCRIPTION

MD2, MD4, and MD5 are cryptographic hash functions with a 128 bit output.

_M_D_2_(_), _M_D_4_(_), and _M_D_5_(_) compute the MD2, MD4, and MD5 message digest of the nn bytes at dd and place it in mmdd (which must have space for MD2_DIGEST_LENGTH == MD4_DIGEST_LENGTH == MD5_DIGEST_LENGTH == 16 bytes of output). If mmdd is NULL, the digest is placed in a static array.

The following functions may be used if the message is not completely stored in memory:

_M_D_2___I_n_i_t_(_) initializes a MMDD22__CCTTXX structure.

_M_D_2___U_p_d_a_t_e_(_) can be called repeatedly with chunks of the message to be hashed (lleenn bytes at ddaattaa).

_M_D_2___F_i_n_a_l_(_) places the message digest in mmdd, which must have space for MD2_DIGEST_LENGTH == 16 bytes of output, and erases the MMDD22__CCTTXX.

_M_D_4___I_n_i_t_(_), _M_D_4___U_p_d_a_t_e_(_), _M_D_4___F_i_n_a_l_(_), _M_D_5___I_n_i_t_(_), _M_D_5___U_p_d_a_t_e_(_), and _M_D_5___F_i_n_a_l_(_) are analogous using an MMDD44__CCTTXX and MMDD55__CCTTXX structure.

Applications should use the higher level functions _E_V_P___D_i_g_e_s_t_I_n_i_t(3) etc. instead of calling the hash functions directly.

NOTE

MD2, MD4, and MD5 are recommended only for compatibility with existing applications. In new applications, SHA-1 or RIPEMD-160 should be preferred.

RETURN VALUES

_M_D_2_(_), _M_D_4_(_), and _M_D_5_(_) return pointers to the hash value.

_M_D_2___I_n_i_t_(_), _M_D_2___U_p_d_a_t_e_(_), _M_D_2___F_i_n_a_l_(_), _M_D_4___I_n_i_t_(_), _M_D_4___U_p_d_a_t_e_(_), _M_D_4___F_i_n_a_l_(_), _M_D_5___I_n_i_t_(_), _M_D_5___U_p_d_a_t_e_(_), and _M_D_5___F_i_n_a_l_(_) return 1 for success, 0 otherwise.

CONFORMING TO

RFC 1319, RFC 1320, RFC 1321

SEE ALSO

_o_p_e_n_s_s_l___s_h_a(3), _o_p_e_n_s_s_l___r_i_p_e_m_d(3), _E_V_P___D_i_g_e_s_t_I_n_i_t(3)

HISTORY

_M_D_2_(_), _M_D_2___I_n_i_t_(_), _M_D_2___U_p_d_a_t_e_(_) _M_D_2___F_i_n_a_l_(_), _M_D_5_(_), _M_D_5___I_n_i_t_(_), _M_D_5___U_p_d_a_t_e_(_) and _M_D_5___F_i_n_a_l_(_) are available in all versions of SSLeay and OpenSSL.

_M_D_4_(_), _M_D_4___I_n_i_t_(_), and _M_D_4___U_p_d_a_t_e_(_) are available in OpenSSL 0.9.6 and above.