Yes..., two very relavent questions.
1) The key. (Unfortunately, this probably won't help you
)
Some key word or key phrase is selected. For instance take "OUTPOST UNIVERSE FORUMS". Now, remove all the spacing and duplicate letters. You end up with "OUTPSNIVERFM". Now we want to add all the rest of the letters of the alphabet that are currently missing at the end of this. Only, instead, we'll arrange things into rows below the current letters.
OUTPSNIVERFM
ABCDGHJKLQWX
YZ
Now we read off the letters in columns and get: "OAYUBZTCPDSGNHIJVKELRQFWMX"
This is what we use as the encryption/decryption key. (Sorta, more later)
Note: The reason we formed the rectangle and read off by columns was to prevent a large number of letters in the key being in the same place they are in the alphabet. Every letter after the "greatest" (last) letter in the key phrase would be intself. The reason this is important should become apparent in the next part.
2) The encryption method. (This is somewhat useful to know).
It is a simple Monoalphabetic single substitution cipher. In other words, each letter of the original text corresponds to eactly one letter of the ciphertext, and the substitution made is always the same. So if A encrypts to B, then all As in the plaintext will become Bs in the ciphertext. But I figure most people probably guessed that when trying it out.
So, continuing the example above, we make a substitution table as follows.
ABCDEFGHIJKLMNOPQRSTUVWXYZ
OAYUBZTCPDSGNHIJVKELRQFWMX
The algorithm works by simply looking for the current character in the table and replacing it with the character below (or above for the reverse operation).
Note: I used the same code for both encryption and decryption since it was easier to just invert the key to get the reverse effect. (So my algorithm always looked up the letter in the top row, and replaced it with the letter in the bottom row. Also, that was what I chose for decryption, so if people are writing their own decrypters they don't have to worry about inverting the key or the algorithm. The inverse key was used for the encryption.)
Anyways, I guess I should leave a quick example of inverting the key, even though you don't need to do this when decrypting. All you have to do is sort the second row into alphabetical order while maintaining the relationship with the row above.
BEHJSWLNOPRTYMAIVUKGDQXZCF
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Of course, since the code always replaces the top letter with the bottom letter, let's just swap these two rows now.
ABCDEFGHIJKLMNOPQRSTUVWXYZ
BEHJSWLNOPRTYMAIVUKGDQXZCF
And there we have the inverse key. If we run the algorithm on some plaintext, and the on the resulting cipher text using these two keys (in any order) we get the plaintext back.
3) Example!
Lets use the key above to excrypt "WELCOME TO THE OPU"
We'll use the inverse key for encryption.
ABCDEFGHIJKLMNOPQRSTUVWXYZ
BEHJSWLNOPRTYMAIVUKGDQXZCF
The ciphertext is then: "XSTHAYS GA GNS AID"
Now, if we try to decrypt that using the original key.
ABCDEFGHIJKLMNOPQRSTUVWXYZ
OAYUBZTCPDSGNHIJVKELRQFWMX
We get back the original plaintext: "WELCOME TO THE OPU".
Hope that helps.
Btw, it probably doesn't help to guess the key word or key phrase. You don't really need it. Instead, you should try to work out the substitution table involved. Although, if you solve one, it might be fun to figure out the keyword/keyphrase based on your substitution table. =)
Have fun
(And I really need a monospaced font. Why do people use anything but?)