A good hash function has a quality where changes in the input data can change every bit in the resulting hash value; for this reason hashes are useful in detecting any modification in a large data object, such as a message.
Furthermore, a good hash function has the quality where that it is computationally in-feasible to construct two independent inputs that have the same hash.
See also hashing functions.
See also Message Authentication Code algorithm.
It can be used with any iterated cryptographic hash algorithm, such as MD5 or SHA-1.