Input:
- first line is text to encrypt in lower-case hex
- second line is key to encrypt in lower-case hex
Output:
- encypted text in lower-case hex
- decrypted text in lower-case hex
Note: code can be optimized even more by replacing gmul by a lookup table and other string optimizations are possible