.Dd $Mdocdate: November 3 2016 $ .Dt MD5 3 .Os .Sh NAME .Nm MD2 , .Nm MD4 , .Nm MD5 , .Nm MD2_Init , .Nm MD2_Update , .Nm MD2_Final , .Nm MD4_Init , .Nm MD4_Update , .Nm MD4_Final , .Nm MD5_Init , .Nm MD5_Update , .Nm MD5_Final .Nd MD2, MD4, and MD5 hash functions .Sh SYNOPSIS .In openssl/md2.h .Ft unsigned char * .Fo MD2 .Fa "const unsigned char *d" .Fa "unsigned long n" .Fa "unsigned char *md" .Fc .Ft int .Fo MD2_Init .Fa "MD2_CTX *c" .Fc .Ft int .Fo MD2_Update .Fa "MD2_CTX *c" .Fa "const unsigned char *data" .Fa "unsigned long len" .Fc .Ft int .Fo MD2_Final .Fa "unsigned char *md" .Fa "MD2_CTX *c" .Fc .In openssl/md4.h .Ft unsigned char * .Fo MD4 .Fa "const unsigned char *d" .Fa "unsigned long n" .Fa "unsigned char *md" .Fc .Ft int .Fo MD4_Init .Fa "MD4_CTX *c" .Fc .Ft int .Fo MD4_Update .Fa "MD4_CTX *c" .Fa "const void *data" .Fa "unsigned long len" .Fc .Ft int .Fo MD4_Final .Fa "unsigned char *md" .Fa "MD4_CTX *c" .Fc .In openssl/md5.h .Ft unsigned char * .Fo MD5 .Fa "const unsigned char *d" .Fa "unsigned long n" .Fa "unsigned char *md" .Fc .Ft int .Fo MD5_Init .Fa "MD5_CTX *c" .Fc .Ft int .Fo MD5_Update .Fa "MD5_CTX *c" .Fa "const void *data" .Fa "unsigned long len" .Fc .Ft int .Fo MD5_Final .Fa "unsigned char *md" .Fa "MD5_CTX *c" .Fc .Sh DESCRIPTION MD2, MD4, and MD5 are cryptographic hash functions with a 128 bit output. .Pp .Fn MD2 , .Fn MD4 , and .Fn MD5 compute the MD2, MD4, and MD5 message digest of the .Fa n bytes at .Fa d and place it in .Fa md , which must have space for .Dv MD2_DIGEST_LENGTH No == .Dv MD4_DIGEST_LENGTH No == .Dv MD5_DIGEST_LENGTH No == 16 bytes of output. If .Fa md is .Dv NULL , the digest is placed in a static array. .Pp The following functions may be used if the message is not completely stored in memory: .Pp .Fn MD2_Init initializes a .Vt MD2_CTX structure. .Pp .Fn MD2_Update can be called repeatedly with chunks of the message to be hashed .Pq Fa len No bytes at Fa data . .Pp .Fn MD2_Final places the message digest in .Fa md , which must have space for .Dv MD2_DIGEST_LENGTH No == 16 bytes of output, and erases the .Vt MD2_CTX . .Pp .Fn MD4_Init , .Fn MD4_Update , .Fn MD4_Final , .Fn MD5_Init , .Fn MD5_Update , and .Fn MD5_Final are analogous using an .Vt MD4_CTX and .Vt MD5_CTX structure. .Pp Applications should use the higher level functions .Xr EVP_DigestInit 3 etc. instead of calling these hash functions directly. .Sh RETURN VALUES .Fn MD2 , .Fn MD4 , and .Fn MD5 return pointers to the hash value. .Pp .Fn MD2_Init , .Fn MD2_Update , .Fn MD2_Final , .Fn MD4_Init , .Fn MD4_Update , .Fn MD4_Final , .Fn MD5_Init , .Fn MD5_Update , and .Fn MD5_Final return 1 for success or 0 otherwise. .Sh SEE ALSO .Xr EVP_DigestInit 3 .Sh STANDARDS RFC 1319, RFC 1320, RFC 1321 .Sh HISTORY .Fn MD2 , .Fn MD2_Init , .Fn MD2_Update , .Fn MD2_Final , .Fn MD5 , .Fn MD5_Init , .Fn MD5_Update , and .Fn MD5_Final are available in all versions of SSLeay and OpenSSL. .Pp .Fn MD4 , .Fn MD4_Init , and .Fn MD4_Update are available in OpenSSL 0.9.6 and above.