100
$\begingroup$

I was wondering about the difference between these two terms... What is the difference between a digest and a hash function?

$\endgroup$
7

3 Answers 3

115
$\begingroup$

The digest is the output of the hash function.

For example, sha256 has a digest of 256 bits, i.e. its digest has a length of 32 bytes.

That's it really.

$\endgroup$
2
  • 1
    $\begingroup$ Comments are not for extended discussion; this conversation has been moved to chat. $\endgroup$
    – e-sushi
    Commented Sep 2, 2017 at 13:41
  • 14
    $\begingroup$ That might be what it means today, but 20+ years ago "message digest algorithm" was simply a synonym for cryptographic hash function. See for example the MD4 RFC which says "...This document describes the MD4 message-digest algorithm ..." $\endgroup$ Commented Sep 2, 2017 at 19:51
26
$\begingroup$

The basic difference between a hash function and digest is that digest is the value obtained from a hash function.

A hash function is any function that can be used to map data of arbitrary size to data of fixed size. The values returned by a hash function are called hash values, hash codes, digests, or simply hashes.

One use is a data structure called a hash function, widely used in computer software for rapid data lookup. For example, suppose that you want to count the number of occurrences of the alphabets in a string.

Always remember that the hash digest returns an alphanumeric message which is the digest. Also,the hash function tries to map large data of variable length to a fixed length data.

$\endgroup$
4
  • 2
    $\begingroup$ Hi, welcome to Crypto.SE, as we speak of cryptography here, we assume that we are talking about cryptographic hash functions. Other hash functions do not interest us and are not in the scope here. Thus one of the use case of hash functions as you defined it (lookup etc) is not our concern. Moreover in this use-case, cryptographic hash functions would be too slow. $\endgroup$
    – Biv
    Commented Sep 2, 2017 at 10:16
  • 11
    $\begingroup$ hash digest returns an alphanumeric message which is the digest. that is incorrect, this alphanumeric message is a representation of the digest. The digest itself is a string of bits with a fixed length. $\endgroup$
    – Biv
    Commented Sep 2, 2017 at 10:17
  • $\begingroup$ @Biv in what scenarios can the representation differ from the reality? I can only think of encoding choice. $\endgroup$
    – Aditya M P
    Commented May 11, 2020 at 18:27
  • 3
    $\begingroup$ @AdityaMP the output of a hash function is a binary data (Blob). You cannot print it out as is to a console, you'd need to encode it to something, e.g. to base64-string. That base64-encoded string is going to be a representation of a Hash. There may be more than one representation of a hash (different String values), but it is still going to be the same digest. $\endgroup$
    – wintermute
    Commented Apr 3, 2021 at 0:52
3
$\begingroup$

The terminology is used a little loosely, but I would characterize a "digest" as intended to be unique, so that if any pair of documents produce the same digest, they are almost certainly identical. Hash functions are only intended to split the input into a set of equivalence classes, where most but not all pairs of documents will have different hashes.

$\endgroup$
2
  • 1
    $\begingroup$ This conflates general-purpose hash functions as used in e.g. data structures, which do indeed just aim to create 'buckets' of things, with cryptographic hash functions, whose aim it is to not allow finding any two documents with the same hash value. $\endgroup$
    – Morrolan
    Commented Nov 21, 2022 at 9:05
  • $\begingroup$ i tend to use this distinction as well when naming my variables, but then: my field is usually outside of crypto doing business software. $\endgroup$
    – elonderin
    Commented Jan 16, 2023 at 12:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.