Solitaire (cipher): Difference between revisions
imported>Sandy Harris No edit summary |
imported>Sandy Harris No edit summary |
||
Line 4: | Line 4: | ||
The key is a shuffled deck of cards. Sender and receiver must each have an identically set up deck. Fifty-four cards are used; the deck includes two jokers. Encryption or decryption involves manipulating the cards, taking card values as numbers, and doing arithmetic modulo 26. There are 26 letters in the English alphabet and 52 non-joker cards in the deck, so the arithmetic works correctly. | The key is a shuffled deck of cards. Sender and receiver must each have an identically set up deck. Fifty-four cards are used; the deck includes two jokers. Encryption or decryption involves manipulating the cards, taking card values as numbers, and doing arithmetic modulo 26. There are 26 letters in the English alphabet and 52 non-joker cards in the deck, so the arithmetic works correctly. | ||
The book includes a computer implementation, written in [[Perl]] by [[Ian Goldberg]]. | The book includes a computer implementation, written in [[Perl]] by [[Ian Goldberg]]. There are other implementations; see the [[Solitaire_(cipher)/External_Links|links]]. |
Latest revision as of 22:50, 12 May 2011
The Solitaire stream cipher was designed by Bruce Schneier and used by characters in Neal Stephenson's novel Cryptonomicon. The design goal was to produce a secure cipher that required the user neither to have access to a computer nor to carry anything that might be incriminating, such as a cipher machine or a book of one-time pad material.
The key is a shuffled deck of cards. Sender and receiver must each have an identically set up deck. Fifty-four cards are used; the deck includes two jokers. Encryption or decryption involves manipulating the cards, taking card values as numbers, and doing arithmetic modulo 26. There are 26 letters in the English alphabet and 52 non-joker cards in the deck, so the arithmetic works correctly.
The book includes a computer implementation, written in Perl by Ian Goldberg. There are other implementations; see the links.