pygame is
Simple DirectMedia Layer is
Site Swing

SolitaireCryptoDemo - 1.2

John Eriksson (wmjoers)



A visual demonstration of the steps involved in generating a keystream using Bruce Schneier's Solitaire encryption algorithm.

Featuring smooth animations and descriptions of all steps.

Type "python" to start the demo.

You can also use several commandline options:

  • -r - Setup a shuffled deck.
  • -u - Setup an unkeyed deck.
  • -k KEY - Setup a keyed deck using the algorithm described at
  • -o - Print found keys to standard out.
  • -h - Display this text.


  • python
    starts the demo with a default deck (keyed with "CRYPTONOMICON").
  • python -r
    starts the demo with a shuffled deck.
  • python -u -o
    starts the demo with an unkeyed deck and prints the keys.
  • python -k MYSECRETKEY
    starts the demo with a keyd deck using the passphrase"MYSECRETKEY".


  • Fixed some small bugs and misspellings.
  • Modified the folder structure.
  • Added several command line arguments for setting up the initial deck.
  • Added a command line argument for outputting the keystream. For debugging purposes.
  • Added a title showing the current step of the algorithm.


Home Page:


click to view original size


SolitaireCryptoDemo - 1.2 - Oct 6, 2008
SolitaireCryptoDemo - 1.1 - Oct 5, 2008
SolitaireCryptoDemo - 1.0 - Feb 8, 2007 account Comments

If you wish to leave a comment with your account, please sign in first.

October 8, 2008 2:22pm - Nolan Baker - nickname: (nbaker) - 5/5
Much easier than using a real deck. Great job.
February 9, 2007 4:16am - John Eriksson - nickname: (wmjoers)
Should be somewhat more optimized now.
February 9, 2007 2:15am - John Eriksson - nickname: (wmjoers)
I would say the whole code is kind of dirty *smile*. For this first release I just wanted the output to be correct. When I get some time I'll optimize and tidy this code a bit.
February 8, 2007 8:18pm - Aaron Maupin - nickname: (maupin)
Looks very good. Nice and clean. I noticed that it uses 100% of the cpu, so you should add a pygame.time.wait(x) statement somewhere in your main loop. You also aren't using dirty rects, which would probably speed up the updates of your large window quite a bit.

our projects welcomes all python game, art, music, sound, video and multimedia projects. If they use pygame or not.
recent releases
May 22, 2016

May 21, 2016

May 18, 2016

May 1, 2016

Mar 27, 2016

Mar 26, 2016

Mar 22, 2016

Mar 19, 2016

Mar 17, 2016

... more!
for pygame related questions, comments, and suggestions, please see help (lists, irc)