Coding Cryptography and Combinatorics