Cryptography Information Theory and Error-Correction