!!! Overview [{$pagename}] is a deterministic [function] that takes an arbitrary block of [data], the [Message] and returns a fixed-size bit string, the [Hash] value, such that an accidental or intentional change to the [data] will almost certainly change the [Hash]. [{$pagename}] [Message-Digest], or [Fingerprint] In our [contexts], the data to be encoded is called the [Message], and the hash value is called the [Hash]. A [Cryptographic Hash Function] is a [{$pagename}] with some additional properties. %%warning [{$pagename}]s may be used for the mapping function used in accessing [hash] tables, a [data] structure used in many [algorithms].\\ These [{$pagename}]s may not be suitable [Cryptographic Hash Function] as they do not have [Hash Function Security Properties]. %% [{$pagename}]s do not require [Cryptographic Keys] for their basic operation. Hash functions generate a relatively small digest ([hash] value) from a (possibly) large input in a way that is fundamentally one-way (i.e., it is difficult to find an input that will produce a given output). Hash functions are used as building blocks for key management, for example: * To provide source and integrity authentication services - the hash function is used with a key to generate a message authentication code * To compress [messages] for [Digital Signature] generation and verification * To derive [keys] in [Key-Establishment] [algorithms] * To generate deterministic [random] numbers !! Why [{$pagename}]? Given a [message] m, you could sign the [message] itself. [Public Key] operations of most [Digital Signature Algorithms] are fairly [CPU] expensive in computational terms. If a [{$pagename}] is applied to the message first and then use [Digital Signature] to sign the [Hash] instead. !! More Information There might be more information for this subject on one of the following: [{ReferringPagesPlugin before='*' after='\n' }]