It's been 13 years. Has there been any cryptoanalysis? I can't tell if the problem Paul Crowley found in <a href="http://www.ciphergoth.org/crypto/solitaire/" rel="nofollow">http://www.ciphergoth.org/crypto/solitaire/</a> is sufficient to sink it.
Cryptonomicon is a great book, btw. It was definitely the one that got me heavily into Neal Stephenson.<p><a href="http://en.wikipedia.org/wiki/Cryptonomicon" rel="nofollow">http://en.wikipedia.org/wiki/Cryptonomicon</a>
I remember writing the bulk of the Wikipedia article[1] on this cipher back in my late teens when I was getting into crypto. Checking back, it's been heavily edited, but it retains the bulk of the original structure and all of the original example that I used. Kinda neat.<p>[1]: <a href="http://en.wikipedia.org/wiki/Solitaire_%28cipher%29" rel="nofollow">http://en.wikipedia.org/wiki/Solitaire_%28cipher%29</a>
I remember reading Cryptonomicon in high school, and being fascinated and terrified by the Perl implementation of this in the book. It was a perfectly rectangular, quarter page quote, with no spaces and a terrifying proliferation of sigils.
Here's a little Ruby implementation I wrote a while back: <a href="https://github.com/jsomers/solitaire" rel="nofollow">https://github.com/jsomers/solitaire</a>. I hope it's correct...
I bought a set of Dungeons and Dragons dice (the set that has dice ranging from 4 to 20 faces) and coded up a Lisp program that turned a roll of 5 of these dice (approx. 16.4 bits of information) into 16 bits (sometimes you have to re-roll). With four rolls I have enough data to seed Lisp's 64-bit PRNG, which was my goal. After all, I use (random x) a whole lot.<p><a href="http://dcussen.posterous.com/my-first-toy-in-lisp-was-random-x" rel="nofollow">http://dcussen.posterous.com/my-first-toy-in-lisp-was-random...</a>
This sounds a lot like OTP (One Time Pads) which is more than 100 years old and was even used, with great success, during WWII.<p><a href="http://en.wikipedia.org/wiki/One-time_pad" rel="nofollow">http://en.wikipedia.org/wiki/One-time_pad</a>
I'd love to see another pass at this. I've frequently got a deck of cards on me, and a 225 bit key isn't bad for a symmetric algorithm; the question is how to extract it smoothly and easily...