COMP 250: Card-Based Encryption - Solitaire Cipher

Solitaire cipher project that encrypts and decrypts messages using a deck of cards by performing specific operations to shuffle the deck, generating a keystream from the card order, and applying this keystream to transform messages into encrypted text and back again.

Encryption & Decryption Demo:

UI created by Ben Coull-Neveu.

Tech used: Java.

How It's Made: This Solitaire cipher project uses Java to implement an encryption and decryption system. The deck is represented as a circular doubly linked list, with each card's position directly influencing the generated keystream. The process involves manipulating the deck through a series of operations, including moving jokers and performing a triple-cut. These operations shuffle the deck in a precise manner to produce a pseudorandom keystream, which is applied to the message and converted into encrypted text.

Lessons Learned: Working on this Solitaire cipher project significantly improved my understanding of circular doubly-linked lists. One of the most challenging aspects was figuring out how to perform operations on the deck while maintaining the list's circular structure and proper linkage. Generating the keystream was also tricky, as it depended on all previous steps being implemented correctly, leading to errors that required debugging to resolve.