Cryptography and Computational Number Theory