INPUT OUTPUT

**Problem:**
Encode *T* using *k* giving *E*, or decode *E* using *k* back to *T*.

**Excerpt from**
The Algorithm Design Manual:
Cryptography has grown substantially in importance in recent
years, as computer networks have made confidential documents
more vulnerable to prying eyes.
Cryptography is a way to increase security by making messages
difficult to read
if they fall into the wrong hands.
Although the discipline of cryptography is at least two thousand years old, its
algorithmic and mathematical foundations have recently solidified
to the point where there can now be talk of provably secure cryptosystems.

The key issue in selecting a cryptosystem is identifying your paranoia level, i.e. deciding how much security you need. Who are you trying to stop from reading your stuff: your grandmother, local thieves, the Mafia, or the NSA? If you can use an accepted implementation of RSA, such as PGP discussed below, you should feel safe against just about anybody.

Practical Algorithms for Programmers by A. Binstock and J. Rex | Protect your Privacy: a guide for PGP Users by W. Stallings | Applied Cryptography : Protocols, Algorithms, and Source Code in C by Bruce Schneier |

Differential Cryptanalysis of the Data Encryption Standard by E. Biham and A. Shamir | Compared to What? by G. Rawlins | Introduction to Algorithms by T. Cormen and C. Leiserson and R. Rivest and C. Stein |

Cryptography and Data Security by D. Denning | The Code breakers: the story of secret writing by D. Kahn |

This page last modified on 2008-07-10 . www.algorist.com