Skip to content

SMFEH323/Solitaire-Encryption

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Solitaire Encryption System

Overview

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.


Features

  • Message encryption and decryption
  • Keystream generation using deck manipulation
  • Card deck simulation
  • Support for plaintext encoding and decoding
  • Java-based command-line interface

How the Algorithm Works

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.


Tech Stack

  • Java
  • Object-Oriented Programming
  • Cryptography Concepts
  • Data Structures

Installation

Clone the Repository

git clone https://github.com/SMFEH323/solitaire-encryption.git

Navigate to the Project Directory

cd solitaire-encryption

Usage

Compile the Project

javac *.java

Run the Application

java SolitaireMain

The program will prompt the user to:

  • Encode a message
  • Decode a message

using the Solitaire encryption algorithm.


Current Limitations

  • Command-line interface only
  • Limited input validation
  • No file-based encryption support
  • Designed mainly for educational use

Future Improvements

  • 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

What This Project Demonstrates

  • Understanding of classical cryptography concepts
  • Pseudorandom keystream generation
  • Object-oriented programming in Java
  • Algorithm implementation from specification
  • Working with custom data structures

Acknowledgments

  • Bruce Schneier for the original design of the Solitaire Encryption Algorithm

About

a Java implementation of the solitaire encryption algorithm

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages