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.