The hash function is a mathematical function that compresses a large amount of data into a small datum called a hash value, and occupies an important place in cryptography. Hash values are sometimes referred to as digital fingerprints; the likelihood of different messages producing the same hash is extremely remote, and minute changes to a message cause major differences in hash values. Since it is practically impossible to deliberately manipulate the hash values returned by hash functions, they are commonly used to check for data corruption and to detect for tampering by malicious adversaries.