Comparison of cryptographic hash functions

Jump to content
From Wikipedia, the free encyclopedia

The following tables compare general and technical information for a number of cryptographic hash functions. See the individual functions' articles for further information. This article is not all-inclusive or necessarily up-to-date. An overview of hash function security/cryptanalysis can be found at hash function security summary.

General information

[edit]

Basic general information about the cryptographic hash functions: year, designer, references, etc.

FunctionYearDesignerDerived fromReference
BLAKE2008Jean-Philippe Aumasson
Luca Henzen
Willi Meier
Raphael C.-W. Phan
ChaCha20Website
Specification
BLAKE22012Jean-Philippe Aumasson
Samuel Neves
Zooko Wilcox-O'Hearn
Christian Winnerlein
BLAKEWebsite
Specification
RFC 7693
BLAKE32020Jack O'Connor
Jean-Philippe Aumasson
Samuel Neves
Zooko Wilcox-O'Hearn
BLAKE2Website
Specification
GOST R 34.11-941994FAPSI and VNIIstandartGOST 28147-89RFC 5831
HAVAL1992Yuliang Zheng
Josef Pieprzyk
Jennifer Seberry
Website
Specification
KangarooTwelve2016Guido Bertoni
Joan Daemen
Michaël Peeters
Gilles Van Assche
KeccakWebsite
Specification
MD21989Ronald RivestRFC 1319
MD41990RFC 1320
MD51992MD4RFC 1321
MD62008Website
Specification
RIPEMD1992The RIPE Consortium[1]MD4
RIPEMD-128
RIPEMD-256
RIPEMD-160
RIPEMD-320
1996Hans Dobbertin
Antoon Bosselaers
Bart Preneel
RIPEMDWebsite
Specification
SHA-01993NSASHA-0
SHA-11995SHA-0Specification
SHA-256
SHA-384
SHA-512
2002
SHA-2242004
SHA-3 (Keccak)2008Guido Bertoni
Joan Daemen
Michaël Peeters
Gilles Van Assche
RadioGatúnWebsite
Specification
Streebog2012FSB, InfoTeCS JSCRFC 6986
Tiger1995Ross Anderson
Eli Biham
Website
Specification
Whirlpool2004Vincent Rijmen
Paulo Barreto
Website

Parameters

[edit]
AlgorithmOutput size (bits)Internal state size[note 1]Block sizeLength sizeWord sizeRounds
BLAKE2b5125121024128[note 2]6412
BLAKE2s25625651264[note 3]3210
BLAKE3Unlimited[note 4]256[note 5]51264327
GOST2562562562563232
HAVAL256/224/192/160/128256102464323/4/5
MD21283841283218
MD412812851264323
MD5128128512643264
PANAMA256873625632
RadioGatúnUnlimited[note 6]58 words19 words[note 7]1–64[note 8]18[note 9]
RIPEMD128128512643248
RIPEMD-128, -256128/256128/256512643264
RIPEMD-160160160512643280
RIPEMD-320320320512643280
SHA-0160160512643280
SHA-1160160512643280
SHA-224, -256224/256256512643264
SHA-384, -512, -512/224, -512/256384/512/224/25651210241286480
SHA-3224/256/384/512[note 10]16001600 - 2*bits[note 11]6424
SHA3-224224160011526424
SHA3-256256160010886424
SHA3-38438416008326424
SHA3-51251216005766424
Tiger(2)-192/160/128192/160/128192512646424
Whirlpool512512512256810

Notes

[edit]
  1. ^ The internal state here means the "internal hash sum" after each compression of a data block. Most hash algorithms also internally use some additional variables such as length of the data compressed so far since that is needed for the length padding in the end. See the Merkle–Damgård construction for details.
  2. ^ The size of BLAKE2b's message length counter is 128-bit, but it counts message length in bytes, not in bits like the other hash functions in the comparison. It can hence handle eight times longer messages than a 128-bit length size would suggest (one byte equaling eight bits). A length size of 131-bit is the comparable length size ().
  3. ^ The size of BLAKE2s's message length counter is 64-bit, but it counts message length in bytes, not in bits like the other hash functions in the comparison. It can hence handle eight times longer messages than a 64-bit length size would suggest (one byte equaling eight bits). A length size of 67-bit is the comparable length size ().
  4. ^ It's technically 264 bytes which equals 267 bits[2]
  5. ^ The full BLAKE3 incremental state includes a chaining value stack up to 1728 bytes in size. However, the compression function itself does not access this stack. A smaller stack can also be used if the maximum input length is restricted.
  6. ^ RadioGatún is an extendable-output function which means it has an output of unlimited size. The official test vectors are 256-bit hashes. RadioGatún claims to have the security level of a cryptographic sponge function 19 words in size, which means the 32-bit version has the security of a 304-bit hash when looking at preimage attacks, but the security of a 608-bit hash when looking at collision attacks. The 64-bit version, likewise, has the security of a 608-bit or 1216-bit hash. For the purposes of determining how vulnerable RadioGatún is to length extension attacks, only two words of its 58-word state are output between hash compression operations.
  7. ^ RadioGatún is not a Merkle–Damgård construction and, as such, does not have a block size. Its belt is 39 words in size; its mill, which is the closest thing RadioGatún has to a "block", is 19 words in size.
  8. ^ Only the 32-bit and 64-bit versions of RadioGatún have official test vectors
  9. ^ The 18 blank rounds are only applied once in RadioGatún, between the end of the input mapping stage and before the generation of output bits
  10. ^ Although the underlying algorithm Keccak has arbitrary hash lengths, the NIST specified 224, 256, 384 and 512 bits output as valid modes for SHA-3.
  11. ^ Implementation dependent; as per section 7, second paragraph from the bottom of page 22, of FIPS PUB 202.

Compression function

[edit]

The following tables compare technical information for compression functions of cryptographic hash functions. The information comes from the specifications, please refer to them for more details.

FunctionSize (bits)[note 1]Words ×
Passes =
Rounds[note 2]
Operations[note 3]Endian[note 4]
WordDigestChaining
values
[note 5]
Computation
values[note 6]
BlockLength
[note 7]
GOST R 34.11-9432×8 = 256×8 = 256324A B L SLittle
HAVAL-3-12832×4 = 128×8 = 256×32 = 1,0246432 × 3 = 96A B SLittle
HAVAL-3-160×5 = 160
HAVAL-3-192×6 = 192
HAVAL-3-224×7 = 224
HAVAL-3-256×8 = 256
HAVAL-4-128×4 = 12832 × 4 = 128
HAVAL-4-160×5 = 160
HAVAL-4-192×6 = 192
HAVAL-4-224×7 = 224
HAVAL-4-256×8 = 256
HAVAL-5-128×4 = 12832 × 5 = 160
HAVAL-5-160×5 = 160
HAVAL-5-192×6 = 192
HAVAL-5-224×7 = 224
HAVAL-5-256×8 = 256
MD28×16 = 128×32 = 256×48 = 384×16 = 128None48 × 18 = 864BN/A
MD432×4 = 128×16 = 5126416 × 3 = 48A B SLittle
MD516 × 4 = 64
RIPEMD32×4 = 128×8 = 256×16 = 5126416 × 3 = 48A B SLittle
RIPEMD-12816 × 4 = 64
RIPEMD-256×8 = 256
RIPEMD-160×5 = 160×10 = 32016 × 5 = 80
RIPEMD-320×10 = 320
SHA-032×5 = 160×16 = 5126416 × 5 = 80A B SBig
SHA-1
SHA-256×8 = 256×8 = 25616 × 4 = 64
SHA-224×7 = 224
SHA-51264×8 = 512×8 = 512×16 = 102412816 × 5 = 80
SHA-384×6 = 384
Tiger-19264×3 = 192×3 = 192×8 = 512648 × 3 = 24A B L SNot Specified
Tiger-160×2.5=160
Tiger-128×2 = 128
FunctionWordDigestChaining
values
Computation
values
BlockLengthWords ×
Passes =
Rounds
OperationsEndian
Size (bits)

Notes

[edit]
  1. ^ The omitted multiplicands are word sizes.
  2. ^ Some authors interchange passes and rounds.
  3. ^ A: addition, subtraction; B: bitwise operation; L: lookup table; S: shift, rotation.
  4. ^ It refers to byte endianness only. If the operations consist of bitwise operations and lookup tables only, the endianness is irrelevant.
  5. ^ The size of message digest equals to the size of chaining values usually. In truncated versions of certain cryptographic hash functions such as SHA-384, the former is less than the latter.
  6. ^ The size of chaining values equals to the size of computation values usually. In certain cryptographic hash functions such as RIPEMD-160, the former is less than the latter because RIPEMD-160 use two sets of parallel computation values and then combine into a single set of chaining values.
  7. ^ The maximum input size = 2length size − 1 bits. For example, the maximum input size of SHA-1 = 264 − 1 bits.

See also

[edit]

References

[edit]
  1. ^ Dobbertin, Hans; Bosselaers, Antoon; Preneel, Bart (21–23 February 1996). RIPEMD-160: A strengthened version of RIPEMD (PDF). Fast Software Encryption. Third International Workshop. Cambridge, UK. pp. 71–82. doi:10.1007/3-540-60865-6_44.
  2. ^ https://github.com/BLAKE3-team/BLAKE3-specs/blob/master/blake3.pdf page 8
[edit]

    The following tables compare general and technical information for a number of cryptographic hash functions. See the individual functions' articles for further information. This article is not all-inclusive or necessarily up-to-date. An overview of hash function security/cryptanalysis can be found at hash function security summary.

    General information

    Basic general information about the cryptographic hash functions: year, designer, references, etc.

    FunctionYearDesignerDerived fromReference
    BLAKE2008Jean-Philippe Aumasson
    Luca Henzen
    Willi Meier
    Raphael C.-W. Phan
    ChaCha20Website
    Specification
    BLAKE22012Jean-Philippe Aumasson
    Samuel Neves
    Zooko Wilcox-O'Hearn
    Christian Winnerlein
    BLAKEWebsite
    Specification
    RFC 7693
    BLAKE32020Jack O'Connor
    Jean-Philippe Aumasson
    Samuel Neves
    Zooko Wilcox-O'Hearn
    BLAKE2Website
    Specification
    GOST R 34.11-941994FAPSI and VNIIstandartGOST 28147-89RFC 5831
    HAVAL1992Yuliang Zheng
    Josef Pieprzyk
    Jennifer Seberry
    Website
    Specification
    KangarooTwelve2016Guido Bertoni
    Joan Daemen
    Michaël Peeters
    Gilles Van Assche
    KeccakWebsite
    Specification
    MD21989Ronald RivestRFC 1319
    MD41990RFC 1320
    MD51992MD4RFC 1321
    MD62008Website
    Specification
    RIPEMD1992The RIPE Consortium[1]MD4
    RIPEMD-128
    RIPEMD-256
    RIPEMD-160
    RIPEMD-320
    1996Hans Dobbertin
    Antoon Bosselaers
    Bart Preneel
    RIPEMDWebsite
    Specification
    SHA-01993NSASHA-0
    SHA-11995SHA-0Specification
    SHA-256
    SHA-384
    SHA-512
    2002
    SHA-2242004
    SHA-3 (Keccak)2008Guido Bertoni
    Joan Daemen
    Michaël Peeters
    Gilles Van Assche
    RadioGatúnWebsite
    Specification
    Streebog2012FSB, InfoTeCS JSCRFC 6986
    Tiger1995Ross Anderson
    Eli Biham
    Website
    Specification
    Whirlpool2004Vincent Rijmen
    Paulo Barreto
    Website

    Parameters

    AlgorithmOutput size (bits)Internal state size[note 1]Block sizeLength sizeWord sizeRounds
    BLAKE2b5125121024128[note 2]6412
    BLAKE2s25625651264[note 3]3210
    BLAKE3Unlimited[note 4]256[note 5]51264327
    GOST2562562562563232
    HAVAL256/224/192/160/128256102464323/4/5
    MD21283841283218
    MD412812851264323
    MD5128128512643264
    PANAMA256873625632
    RadioGatúnUnlimited[note 6]58 words19 words[note 7]1–64[note 8]18[note 9]
    RIPEMD128128512643248
    RIPEMD-128, -256128/256128/256512643264
    RIPEMD-160160160512643280
    RIPEMD-320320320512643280
    SHA-0160160512643280
    SHA-1160160512643280
    SHA-224, -256224/256256512643264
    SHA-384, -512, -512/224, -512/256384/512/224/25651210241286480
    SHA-3224/256/384/512[note 10]16001600 - 2*bits[note 11]6424
    SHA3-224224160011526424
    SHA3-256256160010886424
    SHA3-38438416008326424
    SHA3-51251216005766424
    Tiger(2)-192/160/128192/160/128192512646424
    Whirlpool512512512256810

    Notes

    1. ^ The internal state here means the "internal hash sum" after each compression of a data block. Most hash algorithms also internally use some additional variables such as length of the data compressed so far since that is needed for the length padding in the end. See the Merkle–Damgård construction for details.
    2. ^ The size of BLAKE2b's message length counter is 128-bit, but it counts message length in bytes, not in bits like the other hash functions in the comparison. It can hence handle eight times longer messages than a 128-bit length size would suggest (one byte equaling eight bits). A length size of 131-bit is the comparable length size ().
    3. ^ The size of BLAKE2s's message length counter is 64-bit, but it counts message length in bytes, not in bits like the other hash functions in the comparison. It can hence handle eight times longer messages than a 64-bit length size would suggest (one byte equaling eight bits). A length size of 67-bit is the comparable length size ().
    4. ^ It's technically 264 bytes which equals 267 bits[2]
    5. ^ The full BLAKE3 incremental state includes a chaining value stack up to 1728 bytes in size. However, the compression function itself does not access this stack. A smaller stack can also be used if the maximum input length is restricted.
    6. ^ RadioGatún is an extendable-output function which means it has an output of unlimited size. The official test vectors are 256-bit hashes. RadioGatún claims to have the security level of a cryptographic sponge function 19 words in size, which means the 32-bit version has the security of a 304-bit hash when looking at preimage attacks, but the security of a 608-bit hash when looking at collision attacks. The 64-bit version, likewise, has the security of a 608-bit or 1216-bit hash. For the purposes of determining how vulnerable RadioGatún is to length extension attacks, only two words of its 58-word state are output between hash compression operations.
    7. ^ RadioGatún is not a Merkle–Damgård construction and, as such, does not have a block size. Its belt is 39 words in size; its mill, which is the closest thing RadioGatún has to a "block", is 19 words in size.
    8. ^ Only the 32-bit and 64-bit versions of RadioGatún have official test vectors
    9. ^ The 18 blank rounds are only applied once in RadioGatún, between the end of the input mapping stage and before the generation of output bits
    10. ^ Although the underlying algorithm Keccak has arbitrary hash lengths, the NIST specified 224, 256, 384 and 512 bits output as valid modes for SHA-3.
    11. ^ Implementation dependent; as per section 7, second paragraph from the bottom of page 22, of FIPS PUB 202.

    Compression function

    The following tables compare technical information for compression functions of cryptographic hash functions. The information comes from the specifications, please refer to them for more details.

    FunctionSize (bits)[note 1]Words ×
    Passes =
    Rounds[note 2]
    Operations[note 3]Endian[note 4]
    WordDigestChaining
    values
    [note 5]
    Computation
    values[note 6]
    BlockLength
    [note 7]
    GOST R 34.11-9432×8 = 256×8 = 256324A B L SLittle
    HAVAL-3-12832×4 = 128×8 = 256×32 = 1,0246432 × 3 = 96A B SLittle
    HAVAL-3-160×5 = 160
    HAVAL-3-192×6 = 192
    HAVAL-3-224×7 = 224
    HAVAL-3-256×8 = 256
    HAVAL-4-128×4 = 12832 × 4 = 128
    HAVAL-4-160×5 = 160
    HAVAL-4-192×6 = 192
    HAVAL-4-224×7 = 224
    HAVAL-4-256×8 = 256
    HAVAL-5-128×4 = 12832 × 5 = 160
    HAVAL-5-160×5 = 160
    HAVAL-5-192×6 = 192
    HAVAL-5-224×7 = 224
    HAVAL-5-256×8 = 256
    MD28×16 = 128×32 = 256×48 = 384×16 = 128None48 × 18 = 864BN/A
    MD432×4 = 128×16 = 5126416 × 3 = 48A B SLittle
    MD516 × 4 = 64
    RIPEMD32×4 = 128×8 = 256×16 = 5126416 × 3 = 48A B SLittle
    RIPEMD-12816 × 4 = 64
    RIPEMD-256×8 = 256
    RIPEMD-160×5 = 160×10 = 32016 × 5 = 80
    RIPEMD-320×10 = 320
    SHA-032×5 = 160×16 = 5126416 × 5 = 80A B SBig
    SHA-1
    SHA-256×8 = 256×8 = 25616 × 4 = 64
    SHA-224×7 = 224
    SHA-51264×8 = 512×8 = 512×16 = 102412816 × 5 = 80
    SHA-384×6 = 384
    Tiger-19264×3 = 192×3 = 192×8 = 512648 × 3 = 24A B L SNot Specified
    Tiger-160×2.5=160
    Tiger-128×2 = 128
    FunctionWordDigestChaining
    values
    Computation
    values
    BlockLengthWords ×
    Passes =
    Rounds
    OperationsEndian
    Size (bits)

    Notes

    1. ^ The omitted multiplicands are word sizes.
    2. ^ Some authors interchange passes and rounds.
    3. ^ A: addition, subtraction; B: bitwise operation; L: lookup table; S: shift, rotation.
    4. ^ It refers to byte endianness only. If the operations consist of bitwise operations and lookup tables only, the endianness is irrelevant.
    5. ^ The size of message digest equals to the size of chaining values usually. In truncated versions of certain cryptographic hash functions such as SHA-384, the former is less than the latter.
    6. ^ The size of chaining values equals to the size of computation values usually. In certain cryptographic hash functions such as RIPEMD-160, the former is less than the latter because RIPEMD-160 use two sets of parallel computation values and then combine into a single set of chaining values.
    7. ^ The maximum input size = 2length size − 1 bits. For example, the maximum input size of SHA-1 = 264 − 1 bits.

    See also

    References

    1. ^ Dobbertin, Hans; Bosselaers, Antoon; Preneel, Bart (21–23 February 1996). RIPEMD-160: A strengthened version of RIPEMD (PDF). Fast Software Encryption. Third International Workshop. Cambridge, UK. pp. 71–82. doi:10.1007/3-540-60865-6_44.
    2. ^ https://github.com/BLAKE3-team/BLAKE3-specs/blob/master/blake3.pdf page 8
    • ECRYPT Benchmarking of Cryptographic Hashes – measurements of hash function speed on various platforms
    • The ECRYPT Hash Function Website – A wiki for cryptographic hash functions
    • SHA-3 Project – Information about SHA-3 competition
    Retrieved from "https://en.wikipedia.org/w/index.php?title=Comparison_of_cryptographic_hash_functions&oldid=1291913482"