Introduction - If you have any usage issues, please Google them yourself
The substitution tables (S-boxes) s_box and inv_s_box are used by the expanded key
schedule function key_expansion and the en- and decrypting functions cipher and
inv_cipher to directly substitute a byte (element of GF(28)) by another byte of the
same finite field.
In any speed optimized real-world application the substitution tables would definitely be
hard coded a priori in a constant but in the scope of this educational
paper it seems to be interesting, how the S-boxes can be generated.