TIMECOP
/ crypto_hash

Primitives for crypto_hash

This page lists all primitives grouped under operation crypto_hash.

For each primitive, all listed implementations were checked across a number of compilers, compiler options, and hosts.

The progress bar shows the relative number of successes, fails, and errors:

  • Success. The constant-time checker didn't find any cases where the execution time of the tested code depends on secret data.
  • Fail. The execution time of the tested code depends on secret data.
  • Error.

Errors can have multiple causes:
  • The constant-time checker encountered an error and couldn't be completed.
  • Valgrind found memory issues, but none of them are related to constant-time checks.
  • The constant-time checker timed out after 6 minutes.
  • The tested code produced invalid results. More details can be found near the start of the output file. Example:
    crypto_aead_decrypt returns nonzero 

The absolute number of successes, fails, and errors is shown to the left of the progress bar.

The following code was used to flag secret data, and test implementations:

1void timecop_doit(void)
2{
3 poison(m, TUNE_BYTES);
4 return doit();
5}

Click an implementation to see all checked compiler options.

atelopus32
Description
ATELOPUS with 256-bit output
Designers
George Anescu
Implementations:
atelopus64
Description
ATELOPUS with 512-bit output
Designers
George Anescu
Implementations:
bblake256
Description
BBLAKE-256: BLAKE-256(BLAKE-256(0,m0,m2,m4,...),BLAKE-256(1,m1,m3,m5,...)) where m0,m1,m2,... are 64-byte blocks
Designers
BLAKE-256: see crypto_hash/blake256
Mindless 2-way tree mode: Daniel J. Bernstein
Implementations:
blake256
Description
BLAKE-256: BLAKE with 32-bit words, 14 rounds, and 256-bit output; BLAKE team's final submission for SHA-3-256
Designers
Jean-Philippe Aumasson
Luca Henzen
Willi Meier
Raphael C.-W. Phan
Implementations:
blake2b
Description
BLAKE2b: BLAKE2 with 64-bit words, 12 rounds, and 512-bit output
Designers
Jean-Philippe Aumasson
Samuel Neves
Zooko Wilcox-O'Hearn
Christian Winnerlein
Implementations:
blake2s
Description
BLAKE2s: BLAKE2 with 32-bit words, 10 rounds, and 256-bit output
Designers
Jean-Philippe Aumasson
Samuel Neves
Zooko Wilcox-O'Hearn
Christian Winnerlein
Implementations:
blake32
Description
BLAKE-32: BLAKE with 32-bit words, 10 rounds, and 256-bit output
Designers
Jean-Philippe Aumasson
Luca Henzen
Willi Meier
Raphael C.-W. Phan
Implementations:
blake512
Description
BLAKE-512: BLAKE with 64-bit words, 16 rounds, and 512-bit output; BLAKE team's final submission for SHA-3-512
Designers
Jean-Philippe Aumasson
Luca Henzen
Willi Meier
Raphael C.-W. Phan
Implementations:
blake64
Description
BLAKE-64: BLAKE with 64-bit words, 14 rounds, and 512-bit output
Designers
Jean-Philippe Aumasson
Luca Henzen
Willi Meier
Raphael C.-W. Phan
Implementations:
cubehash161
Description
CubeHash16/1 with 512-bit output
Designers
Daniel J. Bernstein
Implementations:
cubehash1616
Description
CubeHash16/16 with 512-bit output
Designers
Daniel J. Bernstein
Implementations:
cubehash162
Description
CubeHash16/2 with 512-bit output
Designers
Daniel J. Bernstein
Implementations:
cubehash164
Description
CubeHash16/4 with 512-bit output
Designers
Daniel J. Bernstein
Implementations:
cubehash168
Description
CubeHash16/8 with 512-bit output
Designers
Daniel J. Bernstein
Implementations:
cubehash81
Description
CubeHash8/1 with 512-bit output
Designers
Daniel J. Bernstein
Implementations:
cubehash816
Description
CubeHash8/16 with 512-bit output
Designers
Daniel J. Bernstein
Implementations:
cubehash82
Description
CubeHash8/2 with 512-bit output
Designers
Daniel J. Bernstein
Implementations:
cubehash832
Description
CubeHash8/32 with 512-bit output
Designers
Daniel J. Bernstein
Implementations:
cubehash84
Description
CubeHash8/4 with 512-bit output
Designers
Daniel J. Bernstein
Implementations:
cubehash88
Description
CubeHash8/8 with 512-bit output
Designers
Daniel J. Bernstein
Implementations:
echosp256
Description
ECHO, single-pipe variant, with 256-bit output
Designers
Ryad Benadjila
Olivier Billet
Henri Gilbert
Gilles Macario-Rat
Thomas Peyrin
Matt Robshaw
Yannick Seurin
Implementations:
echosp512
Description
ECHO, single-pipe variant, with 512-bit output
Designers
Ryad Benadjila
Olivier Billet
Henri Gilbert
Gilles Macario-Rat
Thomas Peyrin
Matt Robshaw
Yannick Seurin
Implementations:
edonr256
Description
Edon-R with 256-bit output
Designers
Danilo Gligoroski
Implementations:
edonr512
Description
Edon-R with 512-bit output
Designers
Danilo Gligoroski
Implementations:
essence224
Description
Essence with 224-bit output
Designers
Jason Worth Martin
Implementations:
essence256
Description
Essence with 256-bit output
Designers
Jason Worth Martin
Implementations:
essence384
Description
Essence with 384-bit output
Designers
Jason Worth Martin
Implementations:
essence512
Description
Essence with 512-bit output
Designers
Jason Worth Martin
Implementations:
fsb256
Description
FSB with 256-bit output
Designers
Daniel Augot
Matthieu Finiasz
Philippe Gaborit
Stéphane Manuel
Nicolas Sendrier
Implementations:
fsb512
Description
FSB with 512-bit output
Designers
Daniel Augot
Matthieu Finiasz
Philippe Gaborit
Stéphane Manuel
Nicolas Sendrier
Implementations:
fugue2
Description
Fugue 2.0 with 256-bit output, aka fugue2.256

The specification for Fugue 2.0 can be found at

http://researcher.ibm.com/view_project.php?id=3253
Designers
Charanjit Jutla
Shai Halevi
Eric Hall
Implementations:
fugue256
Description
Fugue with 256-bit output
Designers
Charanjit Jutla
Shai Halevi
Eric Hall
Implementations:
fugue512
Description
Fugue with 512-bit output
Designers
Charanjit Jutla
Shai Halevi
Eric Hall
Implementations:
groestl256
Description
Grøstl with 256-bit output; round-3 version starting in supercop-20110426; Grøstl team's final submission for SHA-3-256
Designers
Praveen Gauravaram
Lars R. Knudsen
Krystian Matusiewicz
Florian Mendel
Christian Rechberger
Martin Schläffer
Søren S. Thomsen
Implementations:
groestl512
Description
Grøstl with 512-bit output; round-3 version starting in supercop-20110426; Grøstl team's final submission for SHA-3-512
Designers
Praveen Gauravaram
Lars R. Knudsen
Krystian Matusiewicz
Florian Mendel
Christian Rechberger
Martin Schläffer
Søren S. Thomsen
Implementations:
hamsi
Description
Hamsi with 256-bit output
Designers
Özgül Kücük
Implementations:
keccakc448
Description
Keccak[r=1152,c=448,nr=24] with 224-bit output; padding tweaked starting in supercop-20110426; Keccak team's final submission for SHA-3-224
Designers
Guido Bertoni
Joan Daemen
Michaël Peeters
Gilles Van Assche
Implementations:
lane256
Description
LANE with 256-bit output
Designers
Sebastiaan Indesteege
Elena Andreeva
Christophe De Cannière
Orr Dunkelman
Emilia Käsper
Svetla Nikova
Bart Preneel
Elmar Tischhauser
Implementations:
lane512
Description
LANE with 512-bit output
Designers
Sebastiaan Indesteege
Elena Andreeva
Christophe De Cannière
Orr Dunkelman
Emilia Käsper
Svetla Nikova
Bart Preneel
Elmar Tischhauser
Implementations:
luffa256
Description
Luffa with 256-bit output
Designers
Christophe De Cannière
Hisayoshi Sato
Dai Watanabe
Implementations:
luffa384
Description
Luffa with 384-bit output
Designers
Christophe De Cannière
Hisayoshi Sato
Dai Watanabe
Implementations:
luffa512
Description
Luffa with 512-bit output
Designers
Christophe De Cannière
Hisayoshi Sato
Dai Watanabe
Implementations:
mcssha4
Description
MCSSHA-4 with 512-bit output
Designers
Mikhail Maslennikov
Implementations:
mcssha5
Description
MCSSHA-5 with 512-bit output
Designers
Mikhail Maslennikov
Implementations:
mcssha6
Description
MCSSHA-6 with 512-bit output
Designers
Mikhail Maslennikov
Implementations:
md4
Description
MD4 with 128-bit output
Designers
Ron Rivest
Implementations:
md5
Description
MD5 with 128-bit output
Designers
Ron Rivest
Implementations:
md6d224
Description
MD6-224 with 224-bit output
Designers
Ron Rivest et al.
Implementations:
md6d256
Description
MD6-256 with 256-bit output
Designers
Ron Rivest et al.
Implementations:
md6d384
Description
MD6-384 with 384-bit output
Designers
Ron Rivest et al.
Implementations:
md6d512
Description
MD6-512 with 512-bit output
Designers
Ron Rivest et al.
Implementations:
mgrostl256
Description
Modified Groestl with 256-bit output
Designers
Dhananjoy Dey
Gurpreet Kaur
SK Pal
Vidyavati Nayak
Implementations:
nasha256
Description
NaSHA-256 with 256-bit output
Designers
Smile Markovski
Aleksandra Mileva
Implementations:
nasha512
Description
NaSHA-512 with 512-bit output
Designers
Smile Markovski
Aleksandra Mileva
Implementations:
rfsb509
Description
RFSB-509 using SHA-256 as an output filter
Designers
Daniel J. Bernstein
Tanja Lange
Christiane Peters
Peter Schwabe
Implementations:
rhash
Implementations:
ripemd160
Description
RIPEMD-160 with 160-bit output
Designers
Hans Dobbertin
Antoon Bosselaers
Bart Preneel
Implementations:
round3jh256
Description
JH with 42 rounds and 256-bit output; JH team's final submission for SHA-3-256
Designers
Hongjun Wu
Implementations:
round3jh512
Description
JH with 42 rounds and 512-bit output; JH team's final submission for SHA-3-512
Designers
Hongjun Wu
Implementations:
sarmal256
Description
Sarmal with 256-bit output
Designers
Kerem Varıcı
Onur Özen
Çelebi Kocair
Implementations:
sarmal512
Description
Sarmal with 512-bit output
Designers
Kerem Varıcı
Onur Özen
Çelebi Kocair
Implementations:
sha1
Description
SHA-1 with 160-bit output
Designers
NSA
Implementations:
sha224
Description
SHA-224 with 224-bit output
Designers
NIST
Implementations:
sha384
Description
SHA-384 with 384-bit output
Designers
NSA
Implementations:
shabal256
Description
SHABAL with 256-bit output
Designers
Emmanuel Bresson
Anne Canteaut
Benoît Chevallier-Mames
Christophe Clavier
Thomas Fuhr
Aline Gouget
Thomas Icart
Jean-François Misarsky
Marìa Naya-Plasencia
Pascal Paillier
Thomas Pornin
Jean-René Reinhard
Céline Thuillet
Marion Videau
Implementations:
shabal512
Description
SHABAL with 512-bit output
Designers
Emmanuel Bresson
Anne Canteaut
Benoît Chevallier-Mames
Christophe Clavier
Thomas Fuhr
Aline Gouget
Thomas Icart
Jean-François Misarsky
Marìa Naya-Plasencia
Pascal Paillier
Thomas Pornin
Jean-René Reinhard
Céline Thuillet
Marion Videau
Implementations:
simd256
Description
SIMD-256 with 256-bit output
Designers
Gaëtan Leurent
Charles Bouillaguet
Pierre-Alain Fouque
Implementations:
simd512
Description
SIMD-512 with 512-bit output
Designers
Gaëtan Leurent
Charles Bouillaguet
Pierre-Alain Fouque
Implementations:
skein10241024
Description
Skein-1024-1024 with 1024-bit output; round-3 version starting in supercop-20100924
Designers
Niels Ferguson
Stefan Lucks
Bruce Schneier
Doug Whiting
Mihir Bellare
Tadayoshi Kohno
Jon Callas
Jesse Walker
Implementations:
skein256256
Description
Skein-256-256 with 256-bit output; round-3 version starting in supercop-20100924
Designers
Niels Ferguson
Stefan Lucks
Bruce Schneier
Doug Whiting
Mihir Bellare
Tadayoshi Kohno
Jon Callas
Jesse Walker
Implementations:
skein512256
Description
Skein-512-256 with 256-bit output; round-3 version; Skein team's final submission for SHA-3-256
Designers
Niels Ferguson
Stefan Lucks
Bruce Schneier
Doug Whiting
Mihir Bellare
Tadayoshi Kohno
Jon Callas
Jesse Walker
Implementations:
skein512512
Description
Skein-512-512 with 512-bit output; round-3 version starting in supercop-20100924; Skein team's final submission for SHA-3-512
Designers
Niels Ferguson
Stefan Lucks
Bruce Schneier
Doug Whiting
Mihir Bellare
Tadayoshi Kohno
Jon Callas
Jesse Walker
Implementations:
tiger
Description
Tiger with 192-bit output
Designers
Ross Anderson
Eli Biham
Implementations:
whirlpool
Description
Whirlpool with 512-bit output
Designers
Vincent Rijmen
Paulo S. L. M. Barreto
Implementations: