Skip to content

Latest commit

 

History

History
23 lines (18 loc) · 1.13 KB

README.md

File metadata and controls

23 lines (18 loc) · 1.13 KB

LowMC implementation

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.

The files LowMC.h and LowMC.cpp contain the relevant code. test.cpp contains a short example usage.

The file 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.

Example usage: 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.