Mathematical Techniques for Information Security: Cryptography with Python