Back to Codes

Making Codes


1. Introduction to Ciphers

2. Simple Construction

2.1 Your first code

2.2 Complete Codes

2.2.1 Completing your first code

2.3 Preventing Breakage

2.3.1 Randomization

2.3.2 Dual Symbols

2.3.2.1 Two symbols with one solution

2.3.2.2 One symbol with a combination solution

2.3.3 Extraneous Information

2.4 Intentional Breakage

2.4.1 Topics of Interest

2.4.2 When All Else Fails . . .

3. Combination Techniques . . . . . . . . . . . . . . . . . . . . . . . . .

3.1 Layered Codes

3.2 Patchwork Codes

3.3 Extraneous Codes

4. Advanced Construction

4.1 Variable-Size Symbols

4.2 Symbols of Possibilities

4.2.1 Expressed

4.2.2 Inferred

4.3 Non-Standardized Symbols


1. Introduction to Ciphers

"Cipher" is the technical word used to describe what most people would call a "code"; namely, a system for substituting parts of the real message with coded symbols or sounds, designed to prevent anyone but the intended readers from viewing the message. This site talks only about written codes (as opposed to verbal-, or computer-based codes).

So, why should YOU want to know about codes? Well, maybe there's something specific you're thinking of right now--some message you need to get to a friend which is for their eyes only. Maybe you need to crack a code that's been bothering you for some time. But most likly, you should want to know about ciphers because you never know when it might come in handy.

The following text is designed to teach you the knowledge and skills you need to make and read coded messages.

 


 

2. Simple Construction

Chances are, you're impatient with reading all this information, and you want to cut right to the point, right? Well, you're in luck, because this is designed in the form of a tutorial--it teaches a small lesson, and then lets you experiment with what you've learned to create your own code(s).

 

 

2.1 Your first code

All right, enough chit-chat: its time to make your own code! The best way to do this is to set up a key with all the letters of the alphabet in one column, and blank spaces across from them in an adjacent column (you can use rows instead, if you like). This blank space is where you will put the symbol which represents that letter in your code. If you would like a pre-formatted key, you can get one here. Just print the web page.

Now, since this is going to be your first code, you should keep it simple. The best way to construct a code which is easier to read, write, and remember is to use a specific and not-too-complex method for determining the coded symbol for each letter. Good examples of very simple processes are the Alpha-Numeric code and the Backwards Alphabet code. If you need ideas, look in the example code database.

 

 

2.2 Complete Codes

Now, this code is fine for simple messages, but often it would be nice to send complex or detailed messages. For this, you need more than mere letters, you need to be able to represent almost any symbol in the English alphabet. We refer to a cipher which has coded symbols for almost any character which can be represented as a complete code.

 

2.2.1 Completing your first code

Now that we understand a little bit about the necessity of complete codes, let's go back to your original code and make it into a complete code. This can be done by either expanding on the old table and creating new slots for new symbols, or by creating a new key and simply copying all the current information about your code onto it. We have another pre-formatted key you can use here if you would like to use this technique.

 

 

2.3 Preventing Breakage

Although it is very difficult, it is possible to create a key for a code for which you do not already have a key for, or know. This is called "breaking" the code. This occurs when someone who the writer does not want to read the message reads it despite the code, because they have determined the real equivalent of the coded symbols. Since the entire point of a cipher is to prevent unwanted people from reading it, it can sometimes be necessary to take measures to help prevent others from figuring out the solution to the code.

 

2.3.1 Randomization

One of the simplest ways to help prevent unwanted persons from breaking your code is to randomize all the coded symbols used in it. This can be done manually (by selecting a random symbol for each "real" letter or symbol), but is usually done by the use of a computer. By this method, there is no pattern for out