---
name: "libressl-MD5"
section: "3"
platform: "linux"
package: "libressl"
version: "4.4.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/libressl-MD5"
---

# libressl-MD5(3)

MD4 and MD5 hash functions

## NAME

**MD4**, **MD5**, **MD4\_Init**, **MD4\_Update**, **MD4\_Final**, **MD5\_Init**, **MD5\_Update**, **MD5\_Final** – MD4 and MD5 hash functions

## SYNOPSIS

Crypto Library (libcrypto, -lcrypto)

**#include \<openssl/md4.h\>**

*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 \<openssl/md5.h\>**

*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

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

**MD4**() and **MD5**() compute the MD4 and MD5 message digest of the *n* bytes at *d* and place it in *md*, which must have space for MD4\_DIGEST\_LENGTH == MD5\_DIGEST\_LENGTH == 16 bytes of output.

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

**MD5\_Init**() initializes an *MD5\_CTX* structure.

**MD5\_Update**() can be called repeatedly with chunks of the message to be hashed (*len* bytes at *data*).

**MD5\_Final**() places the message digest in *md*, which must have space for MD5\_DIGEST\_LENGTH == 16 bytes of output, and erases the *MD5\_CTX*.

**MD4\_Init**(), **MD4\_Update**(), and **MD4\_Final**() are analogous using an *MD4\_CTX* structure.

Applications should use the higher level functions EVP\_DigestInit(3) etc. instead of calling these hash functions directly.

## RETURN VALUES

**MD4**() and **MD5**() return pointers to the hash value.

**MD4\_Init**(), **MD4\_Update**(), **MD4\_Final**(), **MD5\_Init**(), **MD5\_Update**(), and **MD5\_Final**() return 1 for success or 0 otherwise.

## SEE ALSO

EVP\_DigestInit(3)

## STANDARDS

RFC 1320, RFC 1321

## HISTORY

**MD5**(), **MD5\_Init**(), **MD5\_Update**(), and **MD5\_Final**() appeared in SSLeay 0.4 or earlier and have been available since OpenBSD 2.4.

**MD4**(), **MD4\_Init**(), **MD4\_Update**(), and **MD4\_Final**() first appeared in OpenSSL 0.9.6 and have been available since OpenBSD 2.9.

## CAVEATS

Other implementations allow *md* in **MD4**() and **MD5**() to be NULL and return a static array, which is not thread safe.
