Basic cryptography principles implemented in Java, for educational purposes only