|MadSci Network: Computer Science|
To begin, let's clarify terms. A code is a system for replacing words or phrases with other words or with numbers. The replacement is typically driven by a translation table, and is typically static, in the sense that a given plaintext word will be replaced by the same codeword each time it appears. Codes are often used to make messages more resistant to garbling by tranmission errors (error-correcting codes), and historically have been used to reduce the volume of data being sent over very expensive communications channels, such as transatlantic telegraph lines 70 years ago. Codes are not very effective at concealing information.
A cipher is a recipe for concealing information, and typically operates on individual letters, individual bytes, or individual bits. Just a few famous ciphers are the Caesar cipher, the Playfair cipher, the Data Encryption Standard (DES), the Rivest-Shamir-Adleman cipher (RSA), and the recently announced Advanced Encryption Standard, Rijndael. Every respectable modern cipher requires, for the process of deciphering a message, a secret numerical key, without which it is impractical to decipher any message, even if one knows all the other details of the cipher. Modern ciphers are very good at concealing information.
Since codes are relatively poor at concealing information, they are not much used for that purpose today. Government secrets, internet traffic, and pay-TV signals are all encrypted with ciphers. Accordingly, all modern efforts at ``breaking'' things aim at breaking ciphers, not codes.
The breaking of codes requires large amounts of sample text, from which the attacker attempts to reconstruct the code book. Hints about the meanings of the code words come from how often the words are used, from their positions within the messages, and from usage patterns that the attackers may recognize from unencoded messages between the same parties. For example, an attacker might guess that a message begins with "Dear Sir" and ends with the name of the sender. The codeword for "end of sentence" is expected to be very common.
Try the links in the MadSci Library for more information on Computer Science.