md5(3) OpenSSL md5(3) NNAAMMEE 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 SSYYNNOOPPSSIISS #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); DDEESSCCRRIIPPTTIIOONN MD2, MD4, and MD5 are cryptographic hash functions with a 128 bit out- put. _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. NNOOTTEE MD2, MD4, and MD5 are recommended only for compatibility with existing applications. In new applications, SHA-1 or RIPEMD-160 should be pre- ferred. RREETTUURRNN VVAALLUUEESS _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. CCOONNFFOORRMMIINNGG TTOO RFC 1319, RFC 1320, RFC 1321 SSEEEE AALLSSOO _s_h_a(3), _r_i_p_e_m_d(3), _E_V_P___D_i_g_e_s_t_I_n_i_t(3) HHIISSTTOORRYY _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. 1.0.1u 2016-09-22 md5(3)