Substitution Techniques in Cryptography