CS 378, Cryptography