A digest is a small value generated by a hash function from a whole message. Ideally, a digest is quick to calculate, irreversible, and unpredictable, and therefore indicates whether someone has tampered with a given message.

A digest can be used to perform several tasks:

  • in non-cryptographic applications (e.g., the index of hash tables, or a fingerprint used to detect duplicate data or to uniquely identify files)
  • verify message integrity (a tampered message will have a different hash)
  • store passwords so that they can't be retrieved, but can still be checked (To do this securely, you also need to salt the password.)
  • generate pseudo-random numbers
  • generate keys

It is critical to choose the proper hash function for your use case to avoid collisions and predictability.

See also