I just bought that book a few weeks ago (after I got my algorithm down for the vigenere cipher, but before I fully obfuscated it) because my other source of information/inspiration for additional algorithms was running dry, and I was trying to figure out a few things:

  1. Next stops for my tour through old encryption ciphers
  2. How to 'break' the 'undecipherable cipher'. I had an idea or two from reading the entry on wikipedia, but was left wanting a more in depth discussion of letter frequency analysis.

I'm glad you posted the link to the book, I was able to get my hands on an electronic version of the ciphertext from the book (I wasn't about to type it all in by hand!) and run my cracking script against it - I was pretty happy to find that I was able to decipher the keyword used to encode that ciphertext, though I wouldn't've recognized the plaintext because it's in french :)

I'm now trying to figure out how to easily get from having the encoding key and the ciphertext and working backwards to get the original plaintext - it's unfortunately not as much of a slam dunk as I thought it would be - but I guess I now know what I'll be working on tonight.

Update: I've finished the breaking script, but it's turned into a monster (what the the optional html formatted output). I was intending to either obfuscate it and post it separately, or post it as a followup to the original node, but I'm thinking instead of posting it to the code section, now that I've started a long way towards cleaning it up, passing strict and warnings, and even documented it with some POD. Comments welcome. End update

I also read up on how the "official" solution for that particular ciphertext was arrived upon, and I am a little embarassed to say that my method for extracting a likely encoding key isn't quite as sophisticated as theirs. I just search for repeating strings, find the greatest common denominator factor for the intervals between the repeats, build a little data structure and "compare" it to a standard letter distribution frequency for plaintext of a similar size. Or something like that.



--chargrill
$,=42;for(34,0,-3,9,-11,11,-17,7,-5){$*.=pack'c'=>$,+=$_}for(reverse s +plit//=>$* ){$%++?$ %%2?push@C,$_,$":push@c,$_,$":(push@C,$_,$")&&push@c,$"}$C[$# +C]=$/;($#C >$#c)?($ c=\@C)&&($ C=\@c):($ c=\@c)&&($C=\@C);$%=$|;for(@$c){print$_^ +$$C[$%++]}

In reply to Re^2: Vigenére cipher by chargrill
in thread Vigenére cipher by chargrill

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.