List of hash functions

Last updated

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

Contents

Cyclic redundancy checks

NameLengthType
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

NameLengthType
BSD checksum (Unix) 16 bitssum with circular rotation
SYSV checksum (Unix) 16 bitssum with circular rotation
sum88 bitssum
Internet Checksum 16 bitssum (ones' complement)
sum2424 bitssum
sum3232 bitssum
fletcher-4 4 bitssum
fletcher-8 8 bitssum
fletcher-16 16 bitssum
fletcher-32 32 bitssum
Adler-32 32 bitssum
xor8 8 bitssum
Luhn algorithm 1 decimal digitsum
Verhoeff algorithm 1 decimal digitsum
Damm algorithm 1 decimal digit Quasigroup operation

Universal hash function families

NameLengthType
Rabin fingerprint variablemultiply
tabulation hashing variableXOR
universal one-way hash function
Zobrist hashing variableXOR

Non-cryptographic hash functions

NameLengthType
Pearson hashing 8 bits (or more)XOR/table
Paul Hsieh's SuperFastHash [1] 32 bits
Buzhash variableXOR/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 bitsXOR/addition
Bernstein's hash djb2 [2] 32 or 64 bitsshift/add or mult/add
or shift/add/xor or mult/xor
PJW hash / Elf Hash 32 or 64 bitsadd,shift,xor
MurmurHash 32, 64, or 128 bitsproduct/rotation
Fast-Hash [3] 32 or 64 bits xorshift operations
SpookyHash32, 64, or 128 bitssee 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] variabledivision/modulo
xxHash [8] 32, 64 or 128 bitsproduct/rotation
t1ha (Fast Positive Hash) [9] 64 or 128 bitsproduct/rotation/XOR/add
GxHash [10] 32, 64 or 128 bitsAES block cipher
pHash [11] fixed or variablesee Perceptual hashing
dhash [12] 128 bitssee Perceptual hashing
SDBM [2] [13] 32 or 64 bitsmult/add or shift/add
also used in GNU AWK
OSDB hash [14] 64 bitsadd
komihash [15] 64 bitsproduct/split/add/XOR

Keyed cryptographic hash functions

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

Unkeyed cryptographic hash functions

NameLengthType
BLAKE-256 256 bitsHAIFA structure [17]
BLAKE-512 512 bitsHAIFA structure [17]
BLAKE2s up to 256 bitsHAIFA structure [17]
BLAKE2b up to 512 bitsHAIFA structure [17]
BLAKE2X arbitraryHAIFA structure, [17] extendable-output functions (XOFs) design [18]
BLAKE3 arbitrary Merkle tree
ECOH 224 to 512 bitshash
FSB 160 to 512 bitshash
GOST 256 bitshash
Grøstl up to 512 bitshash
HAS-160 160 bitshash
HAVAL 128 to 256 bitshash
JH 224 to 512 bitshash
LSH [19] 256 to 512 bitswide-pipe Merkle–Damgård construction
MD2 128 bitshash
MD4 128 bitshash
MD5 128 bits Merkle–Damgård construction
MD6 up to 512 bits Merkle tree NLFSR (it is also a keyed hash function)
RadioGatún arbitraryideal mangling function
RIPEMD 128 bitshash
RIPEMD-128 128 bitshash
RIPEMD-160 160 bitshash
RIPEMD-256 256 bitshash
RIPEMD-320 320 bitshash
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 bitshash
Spectral Hash 512 bitswide-pipe Merkle–Damgård construction
Streebog 256 or 512 bits Merkle–Damgård construction
SWIFFT 512 bitshash
Tiger 192 bits Merkle–Damgård construction
Whirlpool 512 bitshash

See also

Related Research Articles

The MD5 message-digest algorithm is a widely used hash function producing a 128-bit hash value. MD5 was designed by Ronald Rivest in 1991 to replace an earlier hash function MD4, and was specified in 1992 as RFC 1321.

In cryptography, SHA-1 is a hash function which takes an input and produces a 160-bit (20-byte) hash value known as a message digest – typically rendered as 40 hexadecimal digits. It was designed by the United States National Security Agency, and is a U.S. Federal Information Processing Standard. The algorithm has been cryptographically broken but is still widely used.

<span class="mw-page-title-main">Cryptographic hash function</span> Hash function that is suitable for use in cryptography

A cryptographic hash function (CHF) is a hash algorithm that has special properties desirable for a cryptographic application:

In cryptography, a message authentication code (MAC), sometimes known as an authentication tag, is a short piece of information used for authenticating and integrity-checking a message. In other words, to confirm that the message came from the stated sender and has not been changed. The MAC value allows verifiers to detect any changes to the message content.

<span class="mw-page-title-main">/dev/random</span> Pseudorandom number generator file in Unix-like operating systems

In Unix-like operating systems, /dev/random and /dev/urandom are special files that serve as cryptographically secure pseudorandom number generators (CSPRNGs). They allow access to a CSPRNG that is seeded with entropy from environmental noise, collected from device drivers and other sources. /dev/random typically blocked if there was less entropy available than requested; more recently it usually blocks at startup until sufficient entropy has been gathered, then unblocks permanently. The /dev/urandom device typically was never a blocking device, even if the pseudorandom number generator seed was not fully initialized with entropy since boot. Not all operating systems implement the same methods for /dev/random and /dev/urandom.

Bart Preneel is a Belgian cryptographer and cryptanalyst. He is a professor at Katholieke Universiteit Leuven, in the COSIC group.

<span class="mw-page-title-main">Git</span> Distributed version control software system

Git is a distributed version control system that tracks versions of files. It is often used to control source code by programmers who are developing software collaboratively.

<span class="mw-page-title-main">MacPorts</span> Package Manager for macOS

MacPorts, formerly DarwinPorts, is a package manager for macOS and Darwin. It is an open-source software project that aims to simplify the installation of other open source software. It is similar in function to Fink and the BSD ports collections.

Open Source Tripwire is a free software security and data integrity tool for monitoring and alerting on specific file change(s) on a range of systems originally developed by Eugene H. Spafford and Gene Kim. The project is based on code originally contributed by Tripwire, Inc. in 2000. It is released under the terms of GNU General Public License.

In cryptography, Curve25519 is an elliptic curve used in elliptic-curve cryptography (ECC) offering 128 bits of security and designed for use with the Elliptic-curve Diffie–Hellman (ECDH) key agreement scheme. It is one of the fastest curves in ECC, and is not covered by any known patents. The reference implementation is public domain software.

<span class="mw-page-title-main">Skein (hash function)</span> Cryptographic hash function

Skein is a cryptographic hash function and one of five finalists in the NIST hash function competition. Entered as a candidate to become the SHA-3 standard, the successor of SHA-1 and SHA-2, it ultimately lost to NIST hash candidate Keccak.

SHA-3 is the latest member of the Secure Hash Algorithm family of standards, released by NIST on August 5, 2015. Although part of the same series of standards, SHA-3 is internally different from the MD5-like structure of SHA-1 and SHA-2.

MurmurHash is a non-cryptographic hash function suitable for general hash-based lookup. It was created by Austin Appleby in 2008 and, as of 8 January 2016, is hosted on GitHub along with its test suite named SMHasher. It also exists in a number of variants, all of which have been released into the public domain. The name comes from two basic operations, multiply (MU) and rotate (R), used in its inner loop.

Post-quantum cryptography (PQC), sometimes referred to as quantum-proof, quantum-safe, or quantum-resistant, is the development of cryptographic algorithms that are currently thought to be secure against a cryptanalytic attack by a quantum computer. Most widely-used public-key algorithms rely on the difficulty of one of three mathematical problems: the integer factorization problem, the discrete logarithm problem or the elliptic-curve discrete logarithm problem. All of these problems could be easily solved on a sufficiently powerful quantum computer running Shor's algorithm or even faster and less demanding alternatives.

BLAKE is a cryptographic hash function based on Daniel J. Bernstein's ChaCha stream cipher, but a permuted copy of the input block, XORed with round constants, is added before each ChaCha round. Like SHA-2, there are two variants differing in the word size. ChaCha operates on a 4×4 array of words. BLAKE repeatedly combines an 8-word hash value with 16 message words, truncating the ChaCha result to obtain the next hash value. BLAKE-256 and BLAKE-224 use 32-bit words and produce digest sizes of 256 bits and 224 bits, respectively, while BLAKE-512 and BLAKE-384 use 64-bit words and produce digest sizes of 512 bits and 384 bits, respectively.

SipHash is an add–rotate–xor (ARX) based family of pseudorandom functions created by Jean-Philippe Aumasson and Daniel J. Bernstein in 2012, in response to a spate of "hash flooding" denial-of-service attacks (HashDoS) in late 2011.

<span class="mw-page-title-main">Double Ratchet Algorithm</span> Cryptographic key management algorithm

In cryptography, the Double Ratchet Algorithm is a key management algorithm that was developed by Trevor Perrin and Moxie Marlinspike in 2013. It can be used as part of a cryptographic protocol to provide end-to-end encryption for instant messaging. After an initial key exchange it manages the ongoing renewal and maintenance of short-lived session keys. It combines a cryptographic so-called "ratchet" based on the Diffie–Hellman key exchange (DH) and a ratchet based on a key derivation function (KDF), such as a hash function, and is therefore called a double ratchet.

Wire is an encrypted communication and collaboration app created by Wire Swiss. It is available for iOS, Android, Windows, macOS, Linux, and web browsers such as Firefox. Wire offers a collaboration suite featuring messenger, voice calls, video calls, conference calls, file-sharing, and external collaboration – all protected by a secure end-to-end-encryption. Wire offers three solutions built on its security technology: Wire Pro – which offers Wire's collaboration feature for businesses, Wire Enterprise – includes Wire Pro capabilities with added features for large-scale or regulated organizations, and Wire Red – the on-demand crisis collaboration suite. They also offer Wire Personal, which is a secure messaging app for personal use.

Hash-based cryptography is the generic term for constructions of cryptographic primitives based on the security of hash functions. It is of interest as a type of post-quantum cryptography.

<span class="mw-page-title-main">Conversations (software)</span> Free software instant messaging client for the XMPP protocol

Conversations is a free software, instant messaging client application software for Android. It is largely based on recognized open standards such as the Extensible Messaging and Presence Protocol (XMPP) and Transport Layer Security (TLS).

References

  1. "Hash functions". www.azillionmonkeys.com. Retrieved 2015-06-10.
  2. 1 2 "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. 1 2 3 4 5 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.