I've gotten a lot of email over the last few months regarding my work at breaking The Zodiac Killer's 340 Cipher. I'm going to try to share my thought processes from the start, so you will understand what I'm doing and why... hopefully.
Let's start by looking at the 340 Cipher itself. This image comes from zodiackiller.com, which I recommend checking out if you have an interest in the cipher or the killer:

Since many of the symbols in the message aren't characters you can type on a computer keyboard, I decided to replace each of the 62 unique symbols with a unique number from 1 to 62, as illustrated below:

Having done this, I was ready to "translate" the cipher into something I could easily work with in a computer.
I did this by bringing up a graphic editor on my PC and placing the appropriate number beneath each symbol, as illustrated below:
{mosimage}
{mosimage}
This left
me with a numeric version of the cipher. I used a spreadsheet to
determine how many of each symbol appeared in the message. Then I
re-ordered them based on frequency, from most-frequent to
least-frequent. My thinking is that if I focus my efforts on the
symbols appearing most in the message, I have the best chance of
breaking a large chunk of it in one go. Here's what I came up
with:
| Symbol | Count | Rank |
| 19 | 24 | 1 |
| 20 | 12 | 2 |
| 5 | 11 | 3 |
| 50 | 11 | 4 |
| 11 | 10 | 5 |
| 16 | 10 | 6 |
| 23 | 10 | 7 |
| 36 | 10 | 8 |
| 51 | 10 | 9 |
| 40 | 9 | 10 |
| 3 | 8 | 11 |
| 6 | 7 | 12 |
| 21 | 7 | 13 |
| 31 | 7 | 14 |
| 37 | 7 | 15 |
| 7 | 6 | 16 |
| 8 | 6 | 17 |
| 13 | 6 | 18 |
| 15 | 6 | 19 |
| 26 | 6 | 20 |
| 28 | 6 | 21 |
| 29 | 6 | 22 |
| 30 | 6 | 23 |
| 9 | 5 | 24 |
| 10 | 5 | 25 |
| 14 | 5 | 26 |
| 17 | 5 | 27 |
| 18 | 5 | 28 |
| 22 | 5 | 29 |
| 33 | 5 | 30 |
| 34 | 5 | 31 |
| 38 | 5 | 32 |
| 54 | 5 | 33 |
| 55 | 5 | 34 |
| 1 | 4 | 35 |
| 4 | 4 | 36 |
| 25 | 4 | 37 |
| 27 | 4 | 38 |
| 32 | 4 | 39 |
| 39 | 4 | 40 |
| 41 | 4 | 41 |
| 42 | 4 | 42 |
| 44 | 4 | 43 |
| 47 | 4 | 44 |
| 48 | 4 | 45 |
| 2 | 3 | 46 |
| 43 | 3 | 47 |
| 46 | 3 | 48 |
| 52 | 3 | 49 |
| 53 | 3 | 50 |
| 57 | 3 | 51 |
| 60 | 3 | 52 |
| 12 | 2 | 53 |
| 24 | 2 | 54 |
| 35 | 2 | 55 |
| 45 | 2 | 56 |
| 49 | 2 | 57 |
| 56 | 2 | 58 |
| 58 | 2 | 59 |
| 61 | 2 | 60 |
| 62 | 2 | 61 |
| 59 | 1 | 62 |
With this new "ranking" scheme, I re-translated the message from the original numbering to this:
| 35 | 46 | 11 | 36 | 3 | 12 | 16 | 17 | 24 | 25 | 5 | 53 | 18 | 26 | 19 | 6 | 27 |
| 28 | 3 | 1 | 2 | 13 | 29 | 7 | 54 | 37 | 20 | 38 | 21 | 22 | 23 | 14 | 39 | 30 |
| 2 | 31 | 55 | 8 | 15 | 1 | 32 | 40 | 19 | 20 | 13 | 30 | 18 | 29 | 10 | 35 | 41 |
| 42 | 3 | 3 | 47 | 16 | 12 | 43 | 23 | 17 | 56 | 3 | 7 | 1 | 1 | 11 | 14 | 6 |
| 48 | 44 | 15 | 1 | 10 | 45 | 57 | 27 | 5 | 4 | 9 | 24 | 1 | 24 | 49 | 25 | 50 |
| 3 | 43 | 11 | 16 | 9 | 12 | 7 | 33 | 23 | 27 | 34 | 25 | 9 | 36 | 6 | 37 | 13 |
| 29 | 4 | 1 | 14 | 58 | 54 | 51 | 6 | 32 | 8 | 59 | 19 | 17 | 21 | 10 | 18 | 5 |
| 13 | 19 | 6 | 41 | 39 | 57 | 29 | 7 | 1 | 48 | 28 | 38 | 10 | 1 | 62 | 18 | 44 |
| 27 | 22 | 15 | 1 | 52 | 1 | 40 | 11 | 6 | 9 | 2 | 8 | 31 | 60 | 61 | 49 | 14 |
| 33 | 10 | 12 | 32 | 17 | 1 | 16 | 41 | 1 | 7 | 3 | 47 | 22 | 9 | 2 | 31 | 33 |
| 32 | 1 | 11 | 50 | 4 | 45 | 46 | 5 | 37 | 38 | 2 | 3 | 52 | 26 | 15 | 14 | 7 |
| 6 | 22 | 8 | 12 | 11 | 41 | 5 | 23 | 4 | 26 | 4 | 15 | 21 | 1 | 24 | 2 | 9 |
| 10 | 61 | 44 | 42 | 31 | 29 | 1 | 28 | 5 | 4 | 9 | 2 | 8 | 13 | 51 | 43 | 11 |
| 12 | 19 | 9 | 28 | 16 | 39 | 4 | 6 | 4 | 52 | 21 | 8 | 17 | 4 | 45 | 1 | 1 |
| 31 | 2 | 59 | 53 | 23 | 55 | 49 | 44 | 34 | 46 | 36 | 17 | 32 | 40 | 4 | 33 | 1 |
| 5 | 8 | 21 | 56 | 10 | 2 | 14 | 13 | 7 | 3 | 16 | 21 | 39 | 15 | 58 | 19 | 6 |
| 11 | 8 | 26 | 1 | 18 | 4 | 6 | 34 | 22 | 1 | 9 | 12 | 20 | 2 | 5 | 30 | 18 |
| 1 | 1 | 30 | 20 | 34 | 10 | 20 | 8 | 24 | 7 | 42 | 35 | 26 | 50 | 13 | 30 | 3 |
| 5 | 9 | 25 | 27 | 20 | 22 | 47 | 45 | 2 | 48 | 38 | 7 | 2 | 23 | 33 | 34 | 8 |
| 36 | 15 | 37 | 35 | 28 | 3 | 25 | 42 | 10 | 40 | 7 | 43 | 60 | 5 | 14 | 51 | 1 |
It was now time to start making the assumptions under which I would try to crack this cipher.
In earlier ciphers, the Zodiac wrote in English. I assume that this cipher is the same. In earlier ciphers, he used more than one symbol to represent the same letter. I'll assume that with 62 symbols in this message he's got at least a couple of alphabets' worth of letters here, maybe even numeric digits. I'll also assume he's continuing to use the same intentional misspellings he used in earlier messages, like "paradice" instead of "paradise". And I'll assume that he's using words and phrases he's used before, since we all tend to write in a certain voice that doesn't change much.
My next step was to go through his previous writings on zodiackiller.com and glean from them all the words he used in previous messages. I could include the rest of the English language, but that will slow my program down and might generate false hits on words he never used.
Looking at the Zodiac's
previous writings, I was able to determine how often each letter
typically appeared in his writings. The distribution of A, B, C,
etc., was approximately the same as for "normal" English texts
so there was no special help here. However, knowing this would
allow me to include a computationally-fast method for rejecting keys
that were unlikely to be correct. For example, if a given
potential cipher key generated 200 E's in the finished text, it's
probably not correct since we wouldn't expect to find 200 of the 340
cipher symbols to translate to the letter E. In fact, we'd expect
more like about 12% or 40. By adding up the number of A's, B's,
C's, etc., a given key would generate, I could quickly reject a
"bad" key without having to decode the text or scan it for
dictionary words. That would save computer time.