Content deleted Content added
GreenC bot (talk | contribs) m Reformat 1 archive link. Wayback Medic 2.1 |
m Bot: http → https |
||
(50 intermediate revisions by 21 users not shown) | |||
Line 1:
{{short description|Tables comparing general and technical information for common hashes}}
The following tables compare general and technical information for a number of == General information ==
Basic general information about the [[cryptographic hash function]]s: year, designer, references, etc.
{| class="wikitable sortable" style="text-align: center"
|-
! Function
! Year
! Designer
! Derived from
! Reference
|-
| [[BLAKE (hash function)|BLAKE]]
| 2008
| Jean-Philippe Aumasson<br>Luca Henzen<br>Willi Meier<br>Raphael C.-W. Phan
| [[ChaCha20]]
| [https://131002.net/blake/ Website]<br>[https://web.archive.org/web/20201001184633/http://131002.net/blake/blake.pdf Specification]
|-
| [[BLAKE2]]
| 2012
| Jean-Philippe Aumasson<br>Samuel Neves<br>[[Zooko Wilcox-O'Hearn]]<br>Christian Winnerlein
| [[BLAKE (hash function)|BLAKE]]
| [https://blake2.net/ Website]<br>[https://blake2.net/blake2.pdf Specification]<br>{{IETF RFC|7693}}
|-
| [[BLAKE3]]
| 2020
| Jack O'Connor<br>Jean-Philippe Aumasson<br>Samuel Neves<br>[[Zooko Wilcox-O'Hearn]]
| [[BLAKE2]]
| [https://github.com/BLAKE3-team/BLAKE3 Website]<br>[https://github.com/BLAKE3-team/BLAKE3-specs/blob/master/blake3.pdf Specification]
|-
| [[GOST (hash function)|GOST R 34.11-94]]
| 1994
| [[FAPSI]] and VNIIstandart
| [[GOST (block cipher)|GOST 28147-89]]
| {{IETF RFC|5831}}
|-
| [[HAVAL]]
| 1992
| [[Yuliang Zheng]]<br
|
| [https://web.archive.org/web/20150111210116/http://labs.calyptix.com/haval.php Website]<br>[https://web.archive.org/web/20140411060613/http://labs.calyptix.com/files/haval-paper.pdf Specification]
|-
| [[
| 2016
| Guido Bertoni<br>[[Joan Daemen]]<br>Michaël Peeters<br>[[Gilles Van Assche]]
| [[Keccak]]
| [https://keccak.team/kangarootwelve.html Website]<br>[https://keccak.team/files/KangarooTwelve.pdf Specification]
|-
| [[MD2 (hash function)|MD2]]
| 1989
| rowspan="4" | [[Ronald Rivest]]
|
|
|-
| [[MD4]]
| 1990
|
|
|-
| [[MD5]]
| 1992
| [[MD4]]
|
|-
| [[MD6]]
| 2008
|
| [
|-
| [[RIPEMD]]
|
| The RIPE Consortium<ref>{{cite conference|first1=Hans|last1=Dobbertin|author-link1=Hans Dobbertin|first2=Antoon|last2=Bosselaers|first3=Bart|last3=Preneel|author-link3=Bart Preneel|title=RIPEMD-160: A strengthened version of RIPEMD|conference=Fast Software Encryption. Third International Workshop|___location=Cambridge, UK|date=21–23 February 1996|pages=71–82|url=https://homes.esat.kuleuven.be/~bosselae/ripemd160/pdf/AB-9601/AB-9601.pdf|doi=10.1007/3-540-60865-6_44|doi-access=free}}</ref>
| [[MD4]]
|
|-
| [[RIPEMD-128]]<br
| 1996
| [[Hans Dobbertin]]<br
| [[RIPEMD]]
| [
|-
| [[SHA-0]]
Line 54 ⟶ 86:
| rowspan="4"|[[National Security Agency|NSA]]
|
| [https://web.archive.org/web/20090130063617/http://w2.eff.org/Privacy/Digital_signature/?f=fips_sha_shs.info.txt SHA-0]
|-
| [[SHA-1]]
| 1995
| [[SHA-0]]
| rowspan="3" | [
|-
| [[SHA-256]]<br
| 2002
| rowspan="2"|
Line 68 ⟶ 100:
| 2004
|-
| [[SHA-3]] (Keccak)
|
| Guido Bertoni<br>[[Joan Daemen]]<br>Michaël Peeters<br>[[Gilles Van Assche]]
| [[RadioGatún]]
| [https://keccak.team/ Website]<br>[https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf Specification]
|-
| [[Streebog]]
| 2012
| [[Federal Security Service|FSB]], InfoTeCS JSC
|
| {{IETF RFC|6986}}
|-
| [[Tiger (
| 1995
| [[Ross J. Anderson|Ross Anderson]]<br
|
| [
|-
| [[Whirlpool (
| 2004
| [[Vincent Rijmen]]<br
|
| [https://web.archive.org/web/20171129084214/http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html Website]
|}
== Parameters ==
{| class="wikitable sortable" style="text-align: center"
|-
! data-sort-type=text | Algorithm
! data-sort-type=number | Output size (bits)
! data-sort-type=number | Internal state size{{notetag|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.}}
! data-sort-type=number | Block size
! data-sort-type=number | Length size
! data-sort-type=number | Word size
! data-sort-type=number | [[Round (cryptography)|Rounds]]
|-
| '''[[BLAKE2b]]'''
| 512
| 512
| 1024
| 128{{notetag|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 (<math>8 \times 2^{128} = 2^{131}</math>).}}
| 64
| 12
|-
| '''[[BLAKE2s]]'''
| 256
| 256
| 512
| 64{{notetag|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 (<math>8 \times 2^{64} = 2^{67}</math>).}}
| 32
| 10
|-
| '''[[BLAKE3]]'''
| Unlimited{{notetag|It's technically 2<sup>64</sup> bytes which equals 2<sup>67</sup> bits<ref>https://github.com/BLAKE3-team/BLAKE3-specs/blob/master/blake3.pdf page 8</ref>}}
| 256{{notetag|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.}}
| 512
| 64
| 32
| 7
|-
| '''[[GOST (hash function)|GOST]]'''
| 256
Line 128 ⟶ 168:
| 32
| 32
|-
| '''[[HAVAL]]'''
| 256/224/192/160/128
| 256
|
| 64
| 32
| 3/4/5
|-
| '''[[MD2 (hash function)|MD2]]'''
| 128
| 384
| 128
|
| 32
| 18
|-
| '''[[MD4]]'''
| 128
Line 155 ⟶ 192:
| 32
| 3
|-
| '''[[MD5]]'''
| 128
Line 164 ⟶ 200:
| 32
| 64
|-
| '''[[PANAMA]]'''
| 256
|
| 256
|
| 32
|
|-
| '''[[RadioGatún]]'''
| Unlimited{{notetag|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 attack]]s, but the security of a 608-bit hash when looking at [[collision attack]]s. 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 attack]]s, only two words of its 58-word state are output between hash compression operations.}}
| 58 words
| 19 words{{notetag|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.}}
|
| 1–64{{notetag|Only the 32-bit and 64-bit versions of RadioGatún have official test vectors}}
| 18{{notetag|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}}
|-
| '''[[RIPEMD]]'''
| 128
Line 191 ⟶ 224:
| 32
| 48
|-
| '''[[RIPEMD]]-128, -256'''
| 128/256
| 128/256
Line 200 ⟶ 232:
| 32
| 64
|-
| '''[[RIPEMD]]-160'''
| 160
| 160
Line 209 ⟶ 240:
| 32
| 80
|-
| '''[[RIPEMD]]-320'''
| 320
| 320
Line 218 ⟶ 248:
| 32
| 80
|-
| '''[[SHA-0]]'''
| 160
| 160
Line 227 ⟶ 256:
| 32
| 80
|-
| '''[[SHA-1]]'''
| 160
Line 234 ⟶ 262:
| 512
| 64
|
| 80
|-
| '''[[SHA-2|SHA-224, -256]]'''
| 224/256
| 256
| 512
| 64
|
| 64
|-
| '''[[SHA-2|SHA-384, -512, -512/224, -512/256]]'''
| 384/512/224/256
| 512
|
| 128
| 64
| 80
|-
| '''[[SHA-3]]'''
| 224/256/384/512
| 1600
| 1600 - 2*bits
| –{{notetag|Implementation dependent; as per section 7, second paragraph from the bottom of page 22, of FIPS PUB 202.}}
| 64
| 24
|-
| '''[[SHA3]]'''-224
| 224
| 1600
| 1152
|
| 64
| 24
|-
| '''[[SHA3]]'''-256
| 256
| 1600
| 1088
|
| 64
| 24
|-
| '''[[SHA3]]'''-384
| 384
| 1600
| 832
|
| 64
| 24
|-
| '''[[SHA3]]'''-512
| 512
| 1600
| 576
|
| 64
| 24
|-
| '''[[Tiger (hash function)|Tiger(2)-192/160/128]]'''
| 192/160/128
| 192
Line 308 ⟶ 328:
| 64
| 24
|-
| '''[[Whirlpool (hash function)|Whirlpool]]'''
| 512
| 512
Line 317 ⟶ 336:
| 8
| 10
|}
===Notes===
{{notefoot}}
== Compression function ==
The following tables compare technical information for [[One-way compression function|compression function]]s of [[cryptographic hash function]]s. The information comes from the specifications, please refer to them for more details.
{| class="wikitable" style="text-align: center"
|-
! rowspan="2" | Function
! colspan="6" | Size ([[bit]]s)
! rowspan="2" | Words ×
! rowspan="2" | Operations
! rowspan="2" | [[Endianness|Endian]]
|-
! [[Word (computer architecture)|Word]]
! [[Cryptographic hash function|Digest]]
! [[Merkle–Damgård construction|Chaining
! Computation<br
! [[Merkle–Damgård construction|Block]]
! [[Merkle–Damgård construction#Security characteristics|Length]]<br
|-
| [[GOST (hash function)|GOST R 34.11-94]]
| 32
| colspan="3" | {{nowrap|×8 {{=}} 256}}
| {{nowrap|×8 {{=}} 256}}
| 32
| 4
| A B L S
| Little
|-
| [[HAVAL|HAVAL-3-128]]
| rowspan="15" | 32
|
| colspan="2" rowspan="15" | {{nowrap|×8 {{=}} 256}}
| rowspan="15" | {{nowrap|×32 {{=}} 1,024}}
| rowspan="15" | 64
| rowspan="5"
| rowspan="15" | A B S
| rowspan="15" | Little
|-
| [[HAVAL|HAVAL-3-160]]
Line 414 ⟶ 422:
| {{nowrap|×8 {{=}} 256}}
|-
| [[MD2 (
| 8
| {{nowrap|×16 {{=}} 128}}
Line 424 ⟶ 432:
| B
| N/A
|-
| [[MD4]]
Line 431 ⟶ 438:
| rowspan="2" | {{nowrap|×16 {{=}} 512}}
| rowspan="2" | 64
|
| rowspan="2" | A B S
| rowspan="2" | Little
|-
| [[MD5]]
| {{nowrap|16 × 4 {{=}} 64}}
|-
| [[RIPEMD]]
Line 449 ⟶ 454:
| rowspan="5" | A B S
| rowspan="5" | Little
|-
| [[RIPEMD-128]]
| rowspan="2" | {{nowrap|16 × 4 {{=}} 64}}
|-
| [[RIPEMD-256]]
Line 476 ⟶ 479:
|-
| [[SHA-1]]
|-
| [[SHA-256]]
Line 497 ⟶ 499:
| {{nowrap|×6 {{=}} 384}}
|-
| [[
| rowspan="3" | 64
| {{nowrap|×3 {{=}} 192}}
Line 516 ⟶ 508:
| rowspan="3" | A B L S
| rowspan="3" | Not Specified
|-
| [[Tiger (
| ×2.5=160
|-
| [[Tiger (
| {{nowrap|×2 {{=}} 128}}
|-
! rowspan="2" | Function
! [[Word (computer architecture)|Word]]
! [[Cryptographic hash function|Digest]]
! [[Merkle–Damgård construction|Chaining<br>values]]
! Computation<br>values
! [[Merkle–Damgård construction|Block]]
! [[Merkle–Damgård construction#Security characteristics|Length]]
! rowspan="2" | Words ×<br>Passes =<br>Rounds
! rowspan="2" | Operations
! rowspan="2" | [[Endianness|Endian]]
|-
! colspan="6" | Size ([[bit]]s)
|}
=== Notes ===
{{notefoot}}
== See also ==
Line 537 ⟶ 541:
== External links ==
* [https://bench.cr.yp.to/results-hash.html ECRYPT Benchmarking of Cryptographic Hashes] – measurements of hash function speed on various platforms
{{Cryptography navbox
[[Category:Cryptographic primitives]]
[[Category:Cryptographic hash functions| ]]
|