This is a Python implementation of (parts of) the "Codetheorie" course at UAntwerpen, given by Stijn Symens.
Since there is also a project throughout the year concerning the "old" crypto part (Vigenère, Enigma, ...) of the course, this project will not try to implement that (chapters 1 and 2). Instead it focuses on the other chapters:
- Finite fields: done
- (Introduction etc: skipped)
- (Enigma: skipped)
- Discrete logarithm: partly done
- RSA: TODO
- Rijndael: TODO
- Error correcting codes: TODO
- Linear codes: TODO
- Perfect codes: TODO
- Cyclic codes: TODO
- BCH codes: TODO
- Reed-Solomon codes: TODO
The implementation focusses on elegance, and performance is of almost no concern. The code itself is of great value here, and not just the functionality it provides.
To use and experiment with the code, I use Jupyter. However, I don't want output in the git, so I use nbstripout to strip that away. You may have to install it when committing (pip install nbstripout
), as it is set up as a git filter. If you'd rather not install Jupyter, Github has excellent support for viewing Jupyter notebooks. You can copy paste the parts you want into a normal Python terminal.
There is only one version, the latest version. I make full use of the glorious f-strings, so Python 3.6 or newer is required. Required libraries are listed in requirements.txt
.