Digest(3)

NAME
Digest - Message digest.

Module
Module Digest

Documentation

Module Digest
 : sig end

Message digest.

This module provides functions to compute 'digests', also known as 'hashes', of arbitrary-length strings or files. The supported hashing algorithms are BLAKE2 and MD5.

  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 -> t -> 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 -> t -> bool

The equal function for 16-byte digests.

Since 4.03

val string : string -> t

Return the digest of the given string.

val bytes : bytes -> t

Return the digest of the given byte sequence.

Since 4.02

val substring : string -> int -> int -> 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 -> int -> int -> 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 -> int -> 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 -> t

Return the digest of the file whose name is given.

val output : out_channel -> t -> unit

Write a digest on the given output channel.

val input : in_channel -> t

Read a digest from the given input channel.

val to_hex : t -> 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 -> 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 -> t

Same function as Digest.of_hex .

Since 4.00

  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

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