List of hash functions

This is a list of hash functions, including cyclic redundancy checks, checksum functions, and cryptographic hash functions.

This list is incomplete; you can help by adding missing items. (February 2024)

|

## Cyclic redundancy checks

[edit]

Main article: Cyclic redundancy check

Name  | Length  | Type

|
|

cksum (Unix) | 32 bits  | CRC with length appended
CRC-8 | 8 bits  | CRC
CRC-16 | 16 bits  | CRC
CRC-32 | 32 bits  | CRC
CRC-64 | 64 bits  | CRC

Adler-32 is often mistaken for a CRC, but it is not: it is a checksum.

## Checksums

[edit]

Main article: Checksum

Name  | Length  | Type

|
|

BSD checksum (Unix) | 16 bits  | sum with circular rotation
SYSV checksum (Unix) | 16 bits  | sum with circular rotation
sum8  | 8 bits  | sum
Internet Checksum | 16 bits  | sum (ones' complement)
sum24  | 24 bits  | sum
sum32  | 32 bits  | sum
fletcher-4 | 4 bits  | sum
fletcher-8 | 8 bits  | sum
fletcher-16 | 16 bits  | sum
fletcher-32 | 32 bits  | sum
Adler-32 | 32 bits  | sum
xor8 | 8 bits  | sum
Luhn algorithm | 1 decimal digit  | sum
Verhoeff algorithm | 1 decimal digit  | sum
Damm algorithm | 1 decimal digit  | Quasigroup operation

## Universal hash function families

[edit]

Main article: Universal hashing

Name  | Length  | Type

|
|

Rabin fingerprint | variable  | multiply
tabulation hashing | variable  | XOR
universal one-way hash function |  |
Zobrist hashing | variable  | XOR

## Non-cryptographic hash functions

[edit]

Main article: Non-cryptographic hash function

Name  | Length  | Type

|
|

Pearson hashing | 8 bits (or more)  | XOR/table
Paul Hsieh's SuperFastHash[1] | 32 bits  |
Buzhash | variable  | XOR/table
Fowler–Noll–Vo hash function
(FNV Hash)  | 32, 64, 128, 256,
512, or 1024 bits  | xor/product or
product/XOR
Jenkins hash function | 32 or 64 bits  | XOR/addition
Bernstein's hash djb2[2] | 32 or 64 bits  | shift/add or mult/add
or shift/add/xor or mult/xor
PJW hash / Elf Hash | 32 or 64 bits  | add,shift,xor
MurmurHash | 32, 64, or 128 bits  | product/rotation
Fast-Hash[3] | 32 or 64 bits  | xorshift operations
SpookyHash  | 32, 64, or 128 bits  | see Jenkins hash function
CityHash[4] | 32, 64, 128, or 256 bits  |
FarmHash[5] | 32, 64 or 128 bits  |
MetroHash[6] | 64 or 128 bits  |
numeric hash (nhash)[7] | variable  | division/modulo
xxHash[8] | 32, 64 or 128 bits  | product/rotation
t1ha (Fast Positive Hash)[9] | 64 or 128 bits  | product/rotation/XOR/add
GxHash[10] | 32, 64 or 128 bits  | AES block cipher
pHash[11] | fixed or variable  | see Perceptual hashing
dhash[12] | 128 bits  | see Perceptual hashing
SDBM [2][13] | 32 or 64 bits  | mult/add or shift/add
also used in GNU AWK
OSDB hash[14] | 64 bits  | add
komihash[15] | 64 bits  | product/split/add/XOR

## Keyed cryptographic hash functions

[edit]

Main article: Message authentication code

Name  | Tag Length  | Type

|
|

BLAKE2 |  | keyed hash function (prefix-MAC)
BLAKE3 | 256 bits  | keyed hash function (supplied IV)
HMAC |  |
KMAC | arbitrary  | based on Keccak
MD6 | 512 bits  | Merkle tree NLFSR
One-key MAC (OMAC; CMAC)  |  |
PMAC (cryptography) |  |
Poly1305-AES | 128 bits  | nonce-based
SipHash | 32, 64 or 128 bits  | non-collision-resistant PRF
HighwayHash[16] | 64, 128 or 256 bits  | non-collision-resistant PRF
UMAC |  |
VMAC |  |

## Unkeyed cryptographic hash functions

[edit]

Main article: Cryptographic hash function

See also: Comparison of cryptographic hash functions

Name  | Length  | Type

|
|

BLAKE-256 | 256 bits  | HAIFA structure[17]
BLAKE-512 | 512 bits  | HAIFA structure[17]
BLAKE2s | up to 256 bits  | HAIFA structure[17]
BLAKE2b | up to 512 bits  | HAIFA structure[17]
BLAKE2X | arbitrary  | HAIFA structure,[17] extendable-output functions (XOFs) design[18]
BLAKE3 | arbitrary  | Merkle tree
ECOH | 224 to 512 bits  | hash
FSB | 160 to 512 bits  | hash
GOST | 256 bits  | hash
Grøstl | up to 512 bits  | hash
HAS-160 | 160 bits  | hash
HAVAL | 128 to 256 bits  | hash
JH | 224 to 512 bits  | hash
LSH[19] | 256 to 512 bits  | wide-pipe Merkle–Damgård construction
MD2 | 128 bits  | hash
MD4 | 128 bits  | hash
MD5 | 128 bits  | Merkle–Damgård construction
MD6 | up to 512 bits  | Merkle tree NLFSR (it is also a keyed hash function)
RadioGatún | arbitrary  | ideal mangling function
RIPEMD | 128 bits  | hash
RIPEMD-128 | 128 bits  | hash
RIPEMD-160 | 160 bits  | hash
RIPEMD-256 | 256 bits  | hash
RIPEMD-320 | 320 bits  | hash
SHA-1 | 160 bits  | Merkle–Damgård construction
SHA-224 | 224 bits  | Merkle–Damgård construction
SHA-256 | 256 bits  | Merkle–Damgård construction
SHA-384 | 384 bits  | Merkle–Damgård construction
SHA-512 | 512 bits  | Merkle–Damgård construction
SHA-3 (subset of Keccak)  | arbitrary  | sponge function
Skein | arbitrary  | Unique Block Iteration
Snefru | 128 or 256 bits  | hash
Spectral Hash | 512 bits  | wide-pipe Merkle–Damgård construction
Streebog | 256 or 512 bits  | Merkle–Damgård construction
SWIFFT | 512 bits  | hash
Tiger | 192 bits  | Merkle–Damgård construction
Whirlpool | 512 bits  | hash

## See also

[edit]

* Hash function security summary
* Secure Hash Algorithms
* NIST hash function competition
* Key derivation functions (category)

## References

[edit]

1. ^ "Hash functions". www.azillionmonkeys.com. Retrieved 2015-06-10.
2. ^ a b "Hash functions". www.cse.yorku.ca. Retrieved 2020-06-16.
3. ^ Zilong Tan (31 December 2021). "fast-hash on Github". GitHub.
4. ^ cityhash on GitHub
5. ^ farmhash on GitHub
6. ^ MetroHash on GitHub
7. ^ Perl code at top half of page, English text at bottom half Archived 2016-03-04 at the Wayback Machine
8. ^ xxHash on GitHub
9. ^ Leonid Yuriev (25 January 2022). "t1ha on Github". GitHub.
10. ^ gxhash on GitHub
11. ^ "pHash.org: Home of pHash, the open source perceptual hash library". pHash.org. Retrieved 2020-06-16.
12. ^ "dhash". PyPI. 2017-08-23. Retrieved 2020-06-16.
13. ^ "original SDBM source code". github mirror repository. Retrieved 2020-10-30.
14. ^ "HashSourceCodes". OpenSubtitles. Retrieved 2022-08-08.
15. ^ komihash on GitHub
16. ^ highwayhash on GitHub
17. ^ a b c d e Eli Biham and Orr Dunkelman (20 July 2007). "A Framework for Iterative Hash Functions – HAIFA". Cryptology ePrint Archive.
18. ^ Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O’Hearn, and Christian Winnerlein (3 December 2016). "BLAKE2X" (PDF).`{{cite web}}`: CS1 maint: multiple names: authors list (link)
19. ^ Kim, Dong-Chan; Hong, Deukjo; Lee, Jung-Keun; Kim and, Woo-Hwan; Kwon, Daesung (2016). "LSH: A New Fast Secure Hash Function Family" (PDF). Information Security and Cryptology - ICISC 2014. Lecture Notes in Computer Science. Vol. 8949\. pp. 286–313\. doi:10.1007/978-3-319-15943-0_18. ISBN 978-3-319-15942-3. S2CID 35700807. Archived from the original (PDF) on 2018-10-08.286-313&rft.date=2016&rft_id=https://api.semanticscholar.org/CorpusID:35700807#id-name=S2CID&rft_id=info:doi/10.1007/978-3-319-15943-0_18&rft.isbn=978-3-319-15942-3&rft.aulast=Kim&rft.aufirst=Dong-Chan&rft.au=Hong,+Deukjo&rft.au=Lee,+Jung-Keun&rft.au=Kim+and,+Woo-Hwan&rft.au=Kwon,+Daesung&rft_id=https://pdfs.semanticscholar.org/567d/09feb818cc156d2b1e8def1b4bfff63f8e91.pdf&rfr_id=info:sid/en.wikipedia.org:List+of+hash+functions" class="Z3988">