From: Daniel Moore Date: 2009-06-03T11:59:35+09:00 Subject: [QUIZ][SUMMARY] Cryptogram II (#206) --001636e90bac5245fa046b68d95e Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit There was some discussion on the mailing list about the objective of the quiz, due to its enigmatic nature. After the no-spoiler period expired, several people began contributing programs to explore the cryptogram. Ken Bloom provided a solution to decrypt a rotation cipher. A rotation cipher is a simple substitution cipher where each letter is substituted with the letter a fixed number of positions ahead in the alphabet. An example of this is the Caeser Cipher[1] or ROT13[2]. This quiz did not happen to be a rotation cipher, but the algorithm used to encrypt the text was something along those lines. Martin DeMello submitted an exploratory solution. His solution is well commented and documents the process of trying out different substitutions to crack the cipher. There were attempts to use frequency analysis, which is frequently a good strategy to employ in working towards a solution. However, the original text contained the word 'quiz' three times, 'cryptogram' twice and 'cryptography' once. It also contained the words 'rubyists' and 'puzzle'. These particular inclusions in the small amount of text skewed the distribution enough to make frequency analysis problematic. Martin Boese was successfully able to crack the cryptogram. He counted repeated sequences to gain insight into possible words in the cipher text. In particular, the string `KOXMQJBOIG` appeared more than once. The text was encoded using a substitution cipher[3] with the key phrase 'ILKERUBY' to create a mixed alphabet. The cipher text alphabet was created by removing the key phrase and prepending it to mix up the letters: `@cipher_text_alphabet = keyword_array + (@alphabet - keyword_array)`. Then each letter in the plain text message is replaced by the corresponding letter in the cipher text alphabet. Have you guessed what the long word that was repeated in the cipher text was? It was `cryptogram`. The encrypted text was actually the description of the quiz itself, though it wouldn't help much until it is cracked. Here's the original plain text message: Hello Rubyists, This week's quiz is a cryptography puzzle and if you are reading this then you've already cracked it. Congratulations! It's called Cryptogram II because quiz #13 was a cryptogram quiz as well. Hope you had fun! [1]: http://en.wikipedia.org/wiki/Caesar_cipher [2]: http://en.wikipedia.org/wiki/ROT13 [3]: http://en.wikipedia.org/wiki/Substitution_cipher --001636e90bac5245fa046b68d95e Content-Type: application/x-gzip; name="206.tar.gz" Content-Disposition: attachment; filename="206.tar.gz" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fvhfu4ni0 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 rMqq/PvK/wFLDIj6AFAAAA== --001636e90bac5245fa046b68d95e--