<P> A hash function is any function that can be used to map data of arbitrary size to data of fixed size . The values returned by a hash function are called hash values, hash codes, digests, or simply hashes . One use is a data structure called a hash table, widely used in computer software for rapid data lookup . Hash functions accelerate table or database lookup by detecting duplicated records in a large file . An example is finding similar stretches in DNA sequences . They are also useful in cryptography . A cryptographic hash function allows one to easily verify that some input data maps to a given hash value, but if the input data is unknown, it is deliberately difficult to reconstruct it (or equivalent alternatives) by knowing the stored hash value . This is used for assuring integrity of transmitted data, and is the building block for HMACs, which provide message authentication . </P> <P> Hash functions are related to (and often confused with) checksums, check digits, fingerprints, lossy compression, randomization functions, error - correcting codes, and ciphers . Although these concepts overlap to some extent, each has its own uses and requirements and is designed and optimized differently . The Hash Keeper database maintained by the American National Drug Intelligence Center, for instance, is more aptly described as a catalogue of file fingerprints than of hash values . </P> <P> Hash functions are used in hash tables, to quickly locate a data record (e.g., a dictionary definition) given its search key (the headword). Specifically, the hash function is used to map the search key to a list; the index gives the place in the hash table where the corresponding record should be stored . Hash tables, also, are used to implement associative arrays and dynamic sets . </P> <P> Typically, the domain of a hash function (the set of possible keys) is larger than its range (the number of different table indices), and so it will map several different keys to the same index . So then, each slot of a hash table is associated with (implicitly or explicitly) a set of records, rather than a single record . For this reason, each slot of a hash table is often called a bucket, and hash values are also called bucket listing or a bucket index . </P>

What type of key does a hashing algorithm use