List of hash functions

From Wikipedia, the free encyclopedia

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

Cyclic redundancy checks[edit]

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]

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]

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]

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]

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]

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]

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.org. 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.