List of hash functions

{{Short description|none}}

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

{{Incomplete list|date=February 2024}}

Cyclic redundancy checks

{{Main|Cyclic redundancy check}}

class="wikitable sortable mw-collapsible"

!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.

Checksums

{{Main|Checksum}}

class="wikitable sortable mw-collapsible"
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

Universal hash function families

{{main | Universal hashing}}

class="wikitable sortable mw-collapsible"
Name

!Length

!Type

Rabin fingerprint

| variable

| multiply

tabulation hashing

| variable

| XOR

universal one-way hash function

|

|

Zobrist hashing

| variable

| XOR

Non-cryptographic hash functions

{{main|Non-cryptographic hash function}}

class="wikitable sortable mw-collapsible"
Name

!Length

!Type

Pearson hashing

|8 bits (or more)

|XOR/table

Paul Hsieh's SuperFastHash{{Cite web|title = Hash functions|url = http://www.azillionmonkeys.com/qed/hash.html|website = www.azillionmonkeys.com|access-date = 2015-06-10}}

|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{{cite web |url=http://www.cse.yorku.ca/~oz/hash.html |title= Hash functions |website= www.cse.yorku.ca|access-date=2020-06-16}}

|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{{cite web

| url=https://github.com/ZilongTan/fast-hash

| title=fast-hash on Github

| author=Zilong Tan| website=GitHub

| date=31 December 2021

}}

|32 or 64 bits

| xorshift operations

SpookyHash

|32, 64, or 128 bits

|see Jenkins hash function

CityHash{{GitHub|google/cityhash}}

|32, 64, 128, or 256 bits

|

FarmHash{{GitHub|google/farmhash}}

|32, 64 or 128 bits

|

MetroHash{{GitHub|jandrewrogers/MetroHash}}

|64 or 128 bits

|

numeric hash (nhash)[http://cpansearch.perl.org/src/MOOLI/Algorithm-Nhash-0.002/lib/Algorithm/Nhash.pm Perl code at top half of page, English text at bottom half] {{Webarchive|url=https://web.archive.org/web/20160304185318/http://cpansearch.perl.org/src/MOOLI/Algorithm-Nhash-0.002/lib/Algorithm/Nhash.pm |date=2016-03-04 }}

|variable

|division/modulo

xxHash{{GitHub|Cyan4973/xxHash}}

|32, 64 or 128 bits

|product/rotation

t1ha (Fast Positive Hash){{cite web

| url=https://github.com/leo-yuriev/t1ha

| title=t1ha on Github

| author=Leonid Yuriev| website=GitHub

| date=25 January 2022

}}

|64 or 128 bits

|product/rotation/XOR/add

GxHash{{GitHub|ogxd/gxhash}}

|32, 64 or 128 bits

|AES block cipher

pHash{{cite web | title=pHash.org: Home of pHash, the open source perceptual hash library | website=pHash.org | url=http://www.phash.org/ | access-date=2020-06-16}}

|fixed or variable

|see Perceptual hashing

dhash{{cite web | title=dhash | website=PyPI | date=2017-08-23 | url=https://pypi.org/project/dhash/ | access-date=2020-06-16}}

|128 bits

|see Perceptual hashing

SDBM {{cite web |url=https://github.com/davidar/sdbm/blob/29d5ed2b5297e51125ee45f6efc5541851aab0fb/hash.c#L18-L47 |title=original SDBM source code |website=github mirror repository |access-date=2020-10-30}}

|32 or 64 bits

|mult/add or shift/add
also used in GNU AWK

OSDB hash{{cite web |url=https://trac.opensubtitles.org/projects/opensubtitles/wiki/HashSourceCodes |title=HashSourceCodes |website= OpenSubtitles |access-date=2022-08-08}}

|64 bits

|add

komihash{{GitHub|avaneev/komihash}}

|64 bits

|product/split/add/XOR

Keyed cryptographic hash functions

{{main | Message authentication code }}

class="wikitable sortable mw-collapsible"
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

|up to 512 bits

|Merkle tree NLFSR (it is also an unkeyed hash function)

One-key MAC (OMAC; CMAC)

|

|

PMAC (cryptography)

|

|

Poly1305-AES

|128 bits

|nonce-based

SipHash

|32, 64 or 128 bits

|non-collision-resistant PRF

HighwayHash{{GitHub|google/highwayhash}}

|64, 128 or 256 bits

|non-collision-resistant PRF

UMAC

|

|

VMAC

|

|

Unkeyed cryptographic hash functions

{{Main|Cryptographic hash function}}

{{See also | Comparison of cryptographic hash functions}}

class="wikitable sortable mw-collapsible"
Name

!Length

!Type

BLAKE-256

|256 bits

|HAIFA structure{{cite journal |author=Eli Biham and Orr Dunkelman |date=20 July 2007 |title=A Framework for Iterative Hash Functions – HAIFA |journal=Cryptology ePrint Archive |url=http://eprint.iacr.org/2007/278 }}

BLAKE-512

|512 bits

|HAIFA structure

BLAKE2s

|up to 256 bits

|HAIFA structure

BLAKE2b

|up to 512 bits

|HAIFA structure

BLAKE2X

|arbitrary

|HAIFA structure, extendable-output functions (XOFs) design{{cite web |author=Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O’Hearn, and Christian Winnerlein |date=3 December 2016 |title=BLAKE2X |url=https://blake2.net/blake2x.pdf }}

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{{cite book | first1=Dong-Chan | last1=Kim | first2=Deukjo | last2=Hong | first3=Jung-Keun | last3=Lee | first4=Woo-Hwan | last4=Kim and | first5=Daesung | last5=Kwon | title=Information Security and Cryptology - ICISC 2014 |chapter=LSH: A New Fast Secure Hash Function Family | series=Lecture Notes in Computer Science | chapter-url=https://pdfs.semanticscholar.org/567d/09feb818cc156d2b1e8def1b4bfff63f8e91.pdf | archive-url=https://web.archive.org/web/20181008061603/https://pdfs.semanticscholar.org/567d/09feb818cc156d2b1e8def1b4bfff63f8e91.pdf | url-status=dead | archive-date=2018-10-08 | year=2016 | volume=8949 | pages=286–313 | doi=10.1007/978-3-319-15943-0_18 | isbn=978-3-319-15942-3 | s2cid=35700807 }}

|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

See also

References