Introduction to Cryptography with Open-Source Software (Discrete Mathematics and Its Applications)