What is xxHash?
xxHash is a rapid non-cryptographic hash algorithm that operates at the speed of RAM. Four varieties (XXH32, XXH64, XXH3 64 bits, and XXH3 128 bits) are offered. Performance has improved overall with the most recent variant, XXH3, notably for tiny data.
It does not pass the SMHasher test set with 10 points since it is not a robust cryptographic hash like the SHA family. Since its inception, xxHash has been optimised for speed on contemporary CPUs.
The xxHash hash algorithm is as quick as memcpy.
Why hash message digest is important?
Message Digest (hash) allows direct processing of arbitrary length messages using a variety of hashing algorithms to output an fixed length text.
Output is generally referred to as hash values, hash codes, hash amounts, checksums, digest file, digital fingerprint or simply hashes. Generally the length of the output hashes is less than the corresponding length of the input code. Unlike other cryptographic algorithms, the keys have no hash functions.
Secure hashing algorithms
MD2 is a weak algorithm invented in 1989, still used today in some public key cryptography.
MD5 is an extremely popular hashing algorithm but now has very well known collision issues. - md5 hash generator
The SHA2 group, especially SHA-512, is probably the most easily available highly secure hashing algorithms available.
CRC32 is a common algorithm for computing checksums to protect against accidental corruption and changes.
Adler-32 is used as a part of the zlib compression function and is mainly used in a way similar to CRC32, but might be faster than CRCs at a cost of reliability.
Based on the GOST 28147-89 Block Cipher. GOST is a Russian National Standard hashing algorithm that produces 256-bit message digests.
Whirlpool is a standardized, public domain hashing algorithm that produces 512 bit digests.
RIPEMD-128 is a drop-in replacement for the RIPEMD-160 algorithm. It produces 128-bit digests, thus the "128" after the name.
A patent-free algorithm designed in 1995 originally to be optimized for 64-bit DEC Alpha, TIGER today produces fast hashing with security probably on the same order as the SHA2 group or better.
HAVAL is a flexible algorithm that can produce 128, 160, 192, 224, or 256-bit hashes. The number after the HAVAL (e.x. HAVAL128) represents the output size, and the number following the comma (as in HAVAL128,3) represents the "rounds" or "passes" it makes (each pass making it more secure, in theory & some aspects).
This version produces 128-bit digests. SNEFRU-256 also exists but is not currently supported on this site.
Popular cryptographic hashing algorithms
Cryptographic hashing has been an integral part of the cybersecurity spectrum. In fact, it is widely used in different technologies including Bitcoin and other cryptocurrency protocols. Supported hashing algorithms:
- RIPEMD (RIPE Message Digest) is a family of cryptographic hash functions developed in 1992 (the original RIPEMD) and 1996 (other variants). There are five functions in the family: RIPEMD, RIPEMD-128, RIPEMD-160, RIPEMD-256, and RIPEMD-320, of which RIPEMD-160 is the most common.
- In computer science and cryptography, Whirlpool (sometimes styled WHIRLPOOL) is a cryptographic hash function. It was designed by Vincent Rijmen (co-creator of the Advanced Encryption Standard) and Paulo S. L. M. Barreto, who first described it in 2000.
- In cryptography, Tiger is a cryptographic hash function designed by Ross Anderson and Eli Biham in 1995 for efficiency on 64-bit platforms. The size of a Tiger hash value is 192 bits. Truncated versions (known as Tiger/128 and Tiger/160) can be used for compatibility with protocols assuming a particular hash size. Unlike the SHA-2 family, no distinguishing initialization values are defined; they are simply prefixes of the full Tiger/192 hash value.
- Snefru is a cryptographic hash function invented by Ralph Merkle in 1990 while working at Xerox PARC. The function supports 128-bit and 256-bit output. It was named after the Egyptian Pharaoh Sneferu, continuing the tradition of the Khufu and Khafre block ciphers.
- The GOST hash function, defined in the standards GOST R 34.11-94 and GOST 34.311-95 is a 256-bit cryptographic hash function. It was initially defined in the Russian national standard GOST R 34.11-94 Information Technology – Cryptographic Information Security – Hash Function. The equivalent standard used by other member-states of the CIS is GOST 34.311-95.
- Adler-32 is a checksum algorithm which was invented by Mark Adler in 1995, and is a modification of the Fletcher checksum. Compared to a cyclic redundancy check of the same length, it trades reliability for speed (preferring the latter). Adler-32 is more reliable than Fletcher-16, and slightly less reliable than Fletcher-32
- A cyclic redundancy check (CRC) is an error-detecting code commonly used in digital networks and storage devices to detect accidental changes to raw data. Blocks of data entering these systems get a short check value attached, based on the remainder of a polynomial division of their contents. On retrieval, the calculation is repeated and, in the event the check values do not match, corrective action can be taken against data corruption. CRCs can be used for error correction
- Fowler–Noll–Vo is a non-cryptographic hash function. The current versions are FNV-1 and FNV-1a, which supply a means of creating non-zero FNV offset basis. For pure FNV implementations, this is determined solely by the availability of FNV primes for the desired bit length.
One of FNV's key advantages is that it is very simple to implement. Start with an initial hash value of FNV offset basis. For each byte in the input, multiply hash by the FNV prime, then XOR it with the byte from the input. The alternate algorithm, FNV-1a, reverses the multiply and XOR steps.
- The Jenkins hash functions are a collection of (non-cryptographic) hash functions for multi-byte keys designed by Bob Jenkins. Jenkins's one_at_a_time hash is adapted here from a WWW page. The lookup2 function was an interim successor to one-at-a-time. It is the function referred to as "My Hash". The lookup3 function consumes input in 12 byte (96 bit) chunks. It may be appropriate when speed is more important than simplicity. Note, though, that any speed improvement from the use of this hash is only likely to be useful for large keys, and that the increased complexity may also have speed consequences such as preventing an optimizing compiler from inlining the hash function.
- HAVAL is a cryptographic hash function. Unlike MD5, but like most modern cryptographic hash functions, HAVAL can produce hashes of different lengths – 128 bits, 160 bits, 192 bits, 224 bits, and 256 bits. HAVAL also allows users to specify the number of rounds (3, 4, or 5) to be used to generate the hash. HAVAL was broken in 2004.
Research has uncovered weaknesses which make further use of HAVAL (at least the variant with 128 bits and 3 passes with 26 operations) questionable. On 17 August 2004, collisions for HAVAL (128 bits, 3 passes) were announced by Xiaoyun Wang, Dengguo Feng, Xuejia Lai, and Hongbo Yu.