Stdlib.Digest(3) OCaml library Stdlib.Digest(3)

# [NAME](#NAME)

Stdlib.Digest - no description

# [Module](#Module)

Module Stdlib.Digest

# [Documentation](#Documentation)

Module **Digest**  
: **(module Stdlib\_\_Digest)**

## [Basic functions](#Basic_functions)

The functions in this section use the MD5 hash function to produce 128-bit digests (16 bytes). MD5 is not cryptographically secure. Hence, these functions should not be used for security-sensitive applications. The BLAKE2 functions below are cryptographically secure.

*type t* = **string**

The type of digests: 16-byte strings.

*val compare* : **t -&gt; t -&gt; int**

The comparison function for 16-byte digests, with the same specification as **compare** and the implementation shared with **String.compare** . Along with the type **t** , this function **compare** allows the module **Digest** to be passed as argument to the functors **Set.Make** and **Map.Make** .

**Since** 4.00

*val equal* : **t -&gt; t -&gt; bool**

The equal function for 16-byte digests.

**Since** 4.03

*val string* : **string -&gt; t**

Return the digest of the given string.

*val bytes* : **bytes -&gt; t**

Return the digest of the given byte sequence.

**Since** 4.02

*val substring* : **string -&gt; int -&gt; int -&gt; t**

**Digest.substring s ofs len** returns the digest of the substring of **s** starting at index **ofs** and containing **len** characters.

*val subbytes* : **bytes -&gt; int -&gt; int -&gt; t**

**Digest.subbytes s ofs len** returns the digest of the subsequence of **s** starting at index **ofs** and containing **len** bytes.

**Since** 4.02

*val channel* : **in\_channel -&gt; int -&gt; t**

If **len** is nonnegative, **Digest.channel ic len** reads **len** characters from channel **ic** and returns their digest, or raises **End\_of\_file** if end-of-file is reached before **len** characters are read. If **len** is negative, **Digest.channel ic len** reads all characters from **ic** until end-of-file is reached and return their digest.

*val file* : **string -&gt; t**

Return the digest of the file whose name is given.

*val output* : **out\_channel -&gt; t -&gt; unit**

Write a digest on the given output channel.

*val input* : **in\_channel -&gt; t**

Read a digest from the given input channel.

*val to\_hex* : **t -&gt; string**

Return the printable hexadecimal representation of the given digest.

**Raises Invalid\_argument** if the argument is not exactly 16 bytes.

*val of\_hex* : **string -&gt; t**

Convert a hexadecimal representation back into the corresponding digest.

**Since** 5.2

**Raises Invalid\_argument** if the argument is not exactly 32 hexadecimal characters.

*val from\_hex* : **string -&gt; t**

Same function as **Digest.of\_hex** .

**Since** 4.00

## [Generic interface](#Generic_interface)

*module type S =* **sig end**

The signature for a hash function that produces digests of length **hash\_length** from character strings, byte arrays, and files.

**Since** 5.2

## [Specific hash functions](#Specific_hash_functions)

*module BLAKE128 :* **S**

**BLAKE128** is the BLAKE2b hash function producing 128-bit (16-byte) digests. It is cryptographically secure. However, the small size of the digests enables brute-force attacks in **2{^64}** attempts.

**Since** 5.2

*module BLAKE256 :* **S**

**BLAKE256** is the BLAKE2b hash function producing 256-bit (32-byte) digests. It is cryptographically secure, and the digests are large enough to thwart brute-force attacks.

**Since** 5.2

*module BLAKE512 :* **S**

**BLAKE512** is the BLAKE2b hash function producing 512-bit (64-byte) digests. It is cryptographically secure, and the digests are large enough to thwart brute-force attacks.

**Since** 5.2

*module MD5 :* **S**

**MD5** is the MD5 hash function. It produces 128-bit (16-byte) digests and is not cryptographically secure at all. It should be used only for compatibility with earlier designs that mandate the use of MD5.

**Since** 5.2

2026-10-23 OCamldoc

---

Document: Stdlib.Digest(3o) from ocaml 5.5.2-r0 (Chainguard OS)
Source: https://github.com/ocaml/ocaml
