FAQ BANNER

Question 94. What is a Hash Function?

A hash function H is a transformation that takes a variable-size input m and returns a fixed-size string, which is called the hash value h (that is, h = H(m)). Hash functions with just this property have a variety of general computational uses, but when employed in cryptography the hash functions are usually chosen to have some additional properties.

The basic requirements for a cryptographic hash function are:

A hash function H is said to be one-way if it is hard to invert, where "hard to invert" means that given a hash value h, it is computationally infeasible to find some input x such that H(x) = h.

If, given a message x, it is computationally infeasible to find a message y not equal to x such that H(x) = H(y) then H is said to be a weakly collision-free hash function.

A strongly collision-free hash function H is one for which it is computationally infeasible to find any two messages x and y such that H(x) = H(y).

For more information and a particularly thorough study of hash functions, see Preneel [Pre93].

The hash value represents concisely the longer message or document from which it was computed; one can think of a message digest as a "digital fingerprint" of the larger document. Examples of well-known hash functions are MD2 and MD5 (see Question 99) and SHA (see Question 100).

Perhaps the main role of a cryptographic hash function is in the provision of digital signatures. Since hash functions are generally faster than digital signature algorithms, it is typical to compute the digital signature to some document by computing the signature on the document's hash value, which is small compared to the document itself. Additionally, a digest can be made public without revealing the contents of the document from which it is derived. This is important in digital timestamping (see Question 108) where, using hash functions, one can get a document timestamped without revealing its contents to the timestamping service.




| Question 95|
| Back to FAQ INDEX |
|RSA Labs' FAQ Home | RSA Labs' Home | RSA Home |
| What's New? | RSA & Partner Products | FTP Server |
| About ... | Contact Sales | Contact Technical Support |



Contact RSA Laboratories:
100 Marine Parkway, Suite 500
Redwood City, CA
94065-1031

phone: 415-595-8782
fax: 415-595-1873
Website: http://www.rsa.com/rsalabs/



Website feedback or comments can be sent to : WEBMAVEN@RSA.COM

Copyright ©1996, RSA Laboratories, Inc. All Rights Reserved.
Last Updated: Friday, May 31, 1996