92

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

e-sushi
  • 17,891
  • 12
  • 83
  • 229
sekmo
  • 1,031
  • 1
  • 7
  • 7

3 Answers3

108

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.

e-sushi
  • 17,891
  • 12
  • 83
  • 229
Awn
  • 1,552
  • 1
  • 13
  • 18
24

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.

Biv
  • 9,979
  • 2
  • 39
  • 67
Shanif Ansari
  • 349
  • 1
  • 2
  • 2
    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. – Biv Sep 02 '17 at 10:16
  • 10
    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. – Biv Sep 02 '17 at 10:17
  • @Biv in what scenarios can the representation differ from the reality? I can only think of encoding choice. – Aditya M P May 11 '20 at 18:27
  • 3
    @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. – wintermute Apr 03 '21 at 00:52
3

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.

ddyer
  • 509
  • 3
  • 5
  • 1
    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. – Morrolan Nov 21 '22 at 09:05
  • i tend to use this distinction as well when naming my variables, but then: my field is usually outside of crypto doing business software. – elonderin Jan 16 '23 at 12:20