Software resources

Different implementations of Keccak, the standard SHA-3 and SHAKE functions, Ketje, Keyak and Kravatte exist. The first location to look for an implementation is the Keccak Code Package. For reference implementations and tools for cryptanalysis, we propose KeccakTools.

For software performance figures, see this page. For older packages, see the archives.

The Keccak code package

The Keccak Code Package (or KCP) gathers different free and open-source implementations of Keccak and closely related variants, such as the SHAKE extendable-output functions and SHA-3 hash functions, the cSHAKE, KMAC, ParallelHash and TupleHash functions, the Ketje and Keyak authenticated encryption schemes, the fast KangarooTwelve extendable-output function and the Kravatte pseudo-random function.

The KCP is organized in a way that one can easily switch between optimized implementations of the Keccak-p permutations for different platforms, without touching on the higher-level code.

Written in C and in assembly, the KCP also contains some standalone implementations in Python.

KeccakTools

KeccakTools is a set of C++ classes that can help analyze Keccak and the related variants.

KeccakTools contains:

  • the reference implementation of the Keccak-p permutations, and of most of the Keccak instances and variants, including Ketje, Keyak and Kravatte;
  • the generation of optimized code for the round function of Keccak-p;
  • the generation of mathematical equations underlying the operations in Keccak-p;
  • a plethora of tools to analyze Keccak-p under differential and linear cryptanalysis, as used to prove lower bounds on the weight of trails.