discrete math and cryptography