This project is a Java implementation of the Solitaire Encryption Algorithm, a cryptographic method designed by Bruce Schneier that uses a deck of playing cards to generate a pseudorandom keystream for message encryption and decryption.
The goal of this project was to better understand classical cryptography concepts, pseudorandom keystream generation, and secure message encoding techniques by implementing the algorithm from scratch.
- Message encryption and decryption
- Keystream generation using deck manipulation
- Card deck simulation
- Support for plaintext encoding and decoding
- Java-based command-line interface
The Solitaire algorithm simulates operations on a deck of playing cards to generate pseudorandom values.
The generated keystream is then combined with plaintext characters to:
- Encrypt messages
- Decrypt encoded messages
The implementation follows the algorithm described by Bruce Schneier.
- Java
- Object-Oriented Programming
- Cryptography Concepts
- Data Structures
git clone https://github.com/SMFEH323/solitaire-encryption.gitcd solitaire-encryptionjavac *.javajava SolitaireMainThe program will prompt the user to:
- Encode a message
- Decode a message
using the Solitaire encryption algorithm.
- Command-line interface only
- Limited input validation
- No file-based encryption support
- Designed mainly for educational use
- Add graphical user interface
- Support file encryption and decryption
- Improve input validation and error handling
- Add automated testing
- Compare output against standard cryptographic test cases
- Understanding of classical cryptography concepts
- Pseudorandom keystream generation
- Object-oriented programming in Java
- Algorithm implementation from specification
- Working with custom data structures
- Bruce Schneier for the original design of the Solitaire Encryption Algorithm