Seeing how many of us look forward to Angela's daily riddles, I thought I would ride on her coat tails and provide an occasional crypto challenge. If these go over well, I will continue posting them. If not,
c'est la vie. Warning in advance, these are not easy.
There are a few components we need to understand in order to solve these things.
First we have the
cipher text. This is what you will be trying to decrypt. For example:
sghr hr z sdrs.
In order to decrypt this we need to discover the
cipher, or what was used to encrypt the message. For example:
abcdefghijklmnopqrstuvwxyz. Yes that is the standard alphabet, but it could also be the cipher.
Knowing the cipher is by no means enough. In order to encrypt a message, a cipher is often applied against itself, but shifted by some number. We can call this the
offset cipher and the number by which it is shifted we will call the
offset.
cipher: abcdefghijklmnopqrstuvwxyz
offset cipher (+1): zabcdefghijklmnopqrstuvwxy
In order to decrypt a message, simply find the letter in the offset cipher, and look up to the same position on the cipher in order to get the plain text letter. The entire decrypted message is refered to as the
plain text.
cipher: abcdefghijklmnopqrstuvwxyz
offset: zabcdefghijklmnopqrstuvwxy
cipher text: sghr hr z sdrs
plain text: this is a
test Too easy. Since a simple offset of the standard alphabet is so easy, we need to make it more interesting. We will apply a
key to the cipher. The key is any
word (I will only be using English). To apply a key, start your cipher by writing out the key, minus any duplicate letters. Say our key is "java". We will begin writing our cipher like this: jav. Notice we dropped the duplicate 'a'. To complete the cipher simply write the rest of the alphabet minus any letters used by your key. This would give us:
<pre>
Cipher: javbcdefghiklmnopqrstuwxyz
Offset +1: zjavbcdefghiklmnopqrstuwxy
cipher text: sghr hr j sdrs
plain text: this is a test
</pre>
Still pretty simple. Here's where we throw in a monkeywrench. We will apply a
hat to the cipher in order to rearrange it. A hat, like a key, is a word. Let's use "rancher" as an example. To apply the hat, we first need to write it down, and then under each letter, place a number which equates to it's
natural sorted order. Duplicate letters are numbered according to their appearance in the hat, For example:
rancher
6152437
Another one:
freeload
58346712
Get the idea? Next step is to place the cipher row-wise in the columns under the hat.
<pre>
rancher
6152437
-------
javbcde
fghiklm
nopqrst
uwxyz
</pre>
Now we have enough to apply the hat to the cipher. To make your new cipher, pull each column according to it's numbered order. Using the example above, since the 1 is under the second column, we would begin our cipher with: agow. Continuing on to 2, which is the fourth column, we now have: agowbiqy. When we finish, our cipher, with
java as the key, and rancher as the hat, is:
agowbiqydlsckrzvhpxjfnuemt
Using a similar example as earlier, using an offset of +1 to encrypt:
<pre>
Cipher: agowbiqydlsckrzvhpxjfnuemt
Offset +1: tagowbiqydlsckrzvhpxjfnuem
cipher text: mvbl bl t mulm
plain text: this is a test
</pre>
Now that you have the basic info, how do you solve these things? I'll pretty much leave that up to you, since that's half the fun. What I will suggest is that you look for common letter combinations (such as 'th'), prefixes (such as 'pre'), and suffixes (such as 'ing', 'es', 'ed', etc...). Short one or two-letter words are good places to make guesses. Another useful tool might be doing a
frequency count of the letters. In English the most common letters are A-E-I-N-O-R-S-T, and the least common are J-K-Q-X.
The objective: For each puzzle I will present a few different bits of cipher text, all using different offsets against the same cipher. The primary objective is to recover the plain text. Bonus points if you can figure out the cipher, hat, and key.
Good luck.
[This message has been edited by Jason Menard (edited November 27, 2001).]