# List of Hash Functions (All Types with Examples)

A hash function in cryptography refers to a mathematical function that converts a numerical input value into another compress numerical value.

Here is a complete list of different types of hashing algorithms. Think of this as a checklist to help you explore new and old hash functions in cryptography.

Some of them are no longer used today but there is no harm knowing them especially if you are planning on implementing one.

### List of Hash functions in cryptography with Examples

#### A list of keyed cryptographic hash functions

• VMAC – this is a block cipher that is based on message authentication code (MAC). This algorithm was proposed by Ted Krovertz and Wei Dai in 2007.
• UMAC – this is also a message authentication code (MAC) that is calculated by choosing a hash function from a class of hash functions according to a random method and applying it to the message.
• BLAKE2 – this is based on Dan Bernstein’s Chacha stream cipher with a slight permutation on the input block. This is a type of cryptographic hash function that goes up to 512 bits and it’s based on the keyed hash function (prefix-MAC).
• Poly1305-AES – uses AES block cipher to expand the key. This is a type of cryptographic message code with 128 bits and it’s nonce-based.
• SipHash – this is a 64 bits pseudorandom function based on non-collision-resistant PRF.
• One-key MAC – this is constructed from a block cipher. They are of two types (OMAC1 and OMAC2).
• PMAC – it works by taking a block cipher and creating a good MAC that is reducible insecurity to the underlying block cipher. It is very similar to the OMAC algorithm.
• MD6 – this is a 512 bits cryptographic hash function based on Merkle tree NLFSR.
• HMAC – hash-based message authentication code is a type of MAC that uses a cryptographic hash function and a secret key.

#### A list of unkeyed cryptographic hash functions

• BLAKE-256 – this is a 256 bits hash function based on HAIFA structure.
• BLAKE-512 – this is a 512 bits hash function based on HAIFA structure.
• BLAKE2s – this is a type of cryptographic hash function that goes up to 256 bits and it’s based on HAIFA structure.
• BLAKE2b – this is a type of cryptographic hash function that goes up to 512 bits and it’s based on HAIFA structure.
• ECOH – this is a type of hash that has a range of 224 to 512 bits.
• FSB – this is a type of hash that has a range of 160 to 512 bits.
• GOST – this is a 256 bits hash.
• Grostl – this is a type of hash that goes up to 512 bits.
• HAS-160 – this is a 160 bits hash.
• HAVAL – this is a type of hash that has a range of 128 to 256 bits.
• JH – this is a type of hash that has a range of 224 to 512 bits.
• MD2 – this is a 128 bits hash.
• MD4 – this is a 128 bits hash.
• MD6 – this is a type of cryptographic hash function that goes up to 512 bits and it’s based on Merkle tree NLFSR.
• MD5 – this is a 128 bits hash function based on Merkle–Damgård construction.
• RadioGatún – this is a type of hash that goes up to 1216 bits.
• RIPEMD – this is a 128 bits hash.
• RIPEMD-128 – this is also a 128 bits hash.
• RIPEMD-160 – this is a 160 bits hash.
• RIPEMD-320 – this is a 320 bits hash.
• Snefru – this is a type of hash that has a range of 128 to 256 bits.
• SWIFFT – this is a 512 bits hash.
• Whirlpool – this is also a 512 bits hash.
• SHA-1 – this is a 160 bits hash function based on Merkle–Damgård construction.
• SHA-224 – this is a 224 bits hash function also based on Merkle–Damgård construction.
• SHA-256 – this is a 256 bits hash function based on Merkle–Damgård construction.
• SHA-384 – this is a 384 bits hash function based on Merkle–Damgård construction.
• SHA-512 – this is a 512 bits hash function based on Merkle–Damgård construction.
• SHA-3(Keccak) – this is a hash function based on Sponge function and has an arbitrary bits length.
• Streebog – this is a type of cryptographic hash function that ranges from 256 to 512 bits and it’s based on Merkle–Damgård construction.
• Tiger – this is a 192 bits hash function based on Merkle–Damgård construction.
• Skein – this is a cryptographic hash function based on Unique Block Iteration and has an arbitrary bits length.
• Spectral Hash – this is a 512 bits hash function based on Wide pipe Merkle–Damgård construction.

#### A list of cyclic redundancy checks

• BSD checksum – this is a 16 bits error-detecting code.
• Checksum – this is a 32 bits error-detecting code.
• CRC-16 – this is also a 16 bits error-detecting code as the name suggests.
• CRC-32 – this is a 32 bits error-detecting code.
• CRC-32 MPEG-2 – this is a 32 bits error-detecting code.
• CRC-64 – this is a 64 bits error-detecting code.
• SYSV checksum – this is a 16 bits error-detecting code.

#### List of checksums

• Sum (Unix) – this is a 16 or 32 bits checksum algorithm.
• Sum8 – this is an 8 bits checksum algorithm.
• Sum16 – this is a 16 bits checksum.
• Sum24 – this is a 24 bits checksum algorithm.
• Sum32 – this is a 32 bits checksum algorithm.
• Fletcher-4 – this is a 4 bits checksum.
• Fletcher-8 – this is an 8 bits checksum.
• Fletcher-16 – this is a 16 bits checksum.
• Fletcher-32 – this is a 32 bits checksum.
• Adler-32 – this is a 32 bits checksum algorithm.
• Xor8 – this is an 8 bits checksum.
• Luhn algorithm – this is a 1 decimal digit checksum algorithm.
• Verhoeff algorithm – this is also a 1 decimal digit checksum.
• Damm algorithm – this is a 1 decimal digit error detection algorithm based on Quasigroup operation.

#### A list of non-cryptographic hash functions

• Pearson hashing – this is an 8 bits (and more) hash function based on XOR/table.
• Paul Hsieh’s superFasthash – this is a 32 bits hash function.
• Buzhash – this is a hash function based on XOR/table and has a variable bits length.
• Fowler-Noll-Vo hash function(FNV Hash) – this is a non-cryptographic hash function based on xor/product or product/XOR and has (32, 64, 128, 256, 512, or 1024 bits) lengths.
• Jenkins hash function – this is a non-cryptographic hash function based on XOR/addition and has (32 or 64 bits) lengths.
• Java hashCode() – this is a 32 bits non-cryptographic hash.
• Bernstein hash djb2 – this is also a 32 bits non-cryptographic hash.
• PJW hash(ElF Hash) – this is a 32 or 64 bits hash.
• MurmurHash – this is a non-cryptographic hash function based on product/rotation and has (32, 64, or 128 bits) lengths.
• Fast-Hash – this is a non-cryptographic hash function based on Xorshift operations and has (32, 64 bits) lengths.
• SpookyHash – this is a 32, 64, or 128 bits non-cryptographic hash.
• CityHash – this is a 64, 128, or 256 bits non-cryptographic hash.
• FarmHash – this is a 32, 64 or 128 bits non-cryptographic hash.
• MetroHash – this is a 64 or 128 bits non-cryptographic hash.
• Numeric hash(nhash) – this is a non-cryptographic hash function based on Division/Modulo and has a variable bits length.
• xxHash – this is a non-cryptographic hash function based on product/rotation and has a 32 or 64 bits length.
• HighwayHash – this is a non-cryptographic hash function based on product/permutation and has a 64, 128, or 256 bits length.
• T1ha (Fast Positive Hash) – this is a non-cryptographic hash function based on product/rotation/XOR/add and has a 64 and 128 bits length.

#### A list of universal hash functions families

• Zobrist hashing – this is a cryptographic hash function based on XOR and has a variable bits length.
• Universal one-way hash function – this is a hash function that acts as an alternative to collision-resistant hash functions (CRHFs).
• Tabulation hashing – this is a hash function based on XOR and has a variable bits length.
• Rabin fingerprint – this is a hash based on multiple and has a variable bits length.

#### A list of other hash functions

• Atelopus – this is a 32 or 64 bits cryptographic hash.
• Bash – this is a 256, 384 or 512 bits hash.
• BMW – this is a 256 or 512 bits hash.
• Cheetah – this is a 256 or 512 bits hash.
• CubeHash – this is a 81, 82, 84, 88, 161, 162, 164, 168 or 512 bits cryptographic hash.
• Echo – this is a 256 or 512 bits hash.
• Echosp hash function – this is a 256 or 512 bits cryptographic hash.
• Edonr hash function – this is a 256 or 512 bits hash.
• Essence – this is a 224, 256, 384 or 512 bits hash.
• Fugue – this is a 2, 256, 384 or 512 bits hash.
• Hamsi – this is a 256 or 512 bits hash.
• Lane – this is a 256 or 512 bits hash.
• Luffa – this is a 256, 384 or 512 bits hash.
• Lux – this is a 256 or 512 bits hash.
• Mcssha (4, 5 or 6) – this is a 512 bits hash.
• Nasha – this is a 256 or 512 bits hash.
• RFSB-509 – this hash uses SHA-256 as an output filter.
• Round3jh – this is a 256 or 512 bits cryptographic hash.
• Sarmal – this is a 256 or 512 bits cryptographic hash.
• Shabal – this is a 256 or 512 bits hash.
• Shake – this is a 128 or 256 bits cryptographic hash.
• Shavite (3256, 3512) – this is a 256 or 512 bits hash.
• Simd – this is a 256 or 512 bits cryptographic hash.

Now I want to hear from you.

What do you think of this list of hash functions?

Or maybe I missed an important of cryptographic hash functions.

Either way, let me know by leaving a comment below.