This is a C++ implementation of the LowMC block cipher family. The
parameters (block size, number of S-boxes in the substitution layer, number
of rounds, key size) are defined in
LowMC.h. Compilation requires support
of C++11 features.
LowMC.cpp contain the relevant code.
contains a short example usage.
determine_rounds.py contains a Python script that determines
the number of rounds needed for LowMC to be secure in dependence on
the other parameters: the block size n, the number of S-boxes per layer m,
the log2 of the allowed data complexity d, and the key size k.
python3 determine_rounds.py 256 63 128 128
Script for generating the matrices and and constants
The python script
generate_matrices.py can be used to generate the matrices
for the linear layer and the key schedule as well as the round constants.
They are written to a file named
matrices_and_constants.dat. This is script
can provide the matrices for use in cryptanalysis. It is not needed for the
reference implementation which creates the matrices and constants internally.