Lattices, cryptography, and the NTRU public key cryptosystem