This is a list of hash functions, including cyclic redundancy checks, checksum functions, and cryptographic hash functions.
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.
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 |
Name | Length | Type |
---|---|---|
Rabin fingerprint | variable | multiply |
tabulation hashing | variable | XOR |
universal one-way hash function | ||
Zobrist hashing | variable | XOR |
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 |
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 | ||
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 |
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.
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.
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.
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.
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.
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.
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.
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).
{{cite web}}
: CS1 maint: multiple names: authors list (link)