Java app to decrypt substitution ciphers
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
Alphabet.java
Assumption.java
Blackboard.java
CipherLetter.java
ConsonantKnowledgeSource.java
Controller.java
Cryptographer.java
Dictionary.txt
DictionaryDatabase.java
DirectSubstitutionKnowledgeSource.java
DoubleLetterKnowledgeSource.java
IllegalStringList
KnowledgeSource.java
KnowledgeSources.java
LegalStringKnowledgeSource.java
LetterFrequencyKnowledgeSource.java
LetterKnowledgeSource.java
PatternMatchingKnowledgeSource.java
README.md
Sentence.java
SentenceKnowledgeSource.java
SentenceStructureKnowledgeSource.java
Sentences.txt
SmallWordKnowledgeSource.java
SolvedKnowledgeSource.java
StringKnowledgeSource.java
VowelKnowledgeSource.java
Word.java
WordKnowledgeSource.java
WordStructureKnowledgeSource.java

README.md

Decryption

Decrypts a Simple Substitution Cipher text. Creates Knowledge Sources with enough knowledge about English language with respect to the spellings of the words, the vowels, consonants, grammar etc, so that it is able to decrypt the input by making a series of intelligent decisions about the mappings and evaluating them against the sentence database. Backtracking is used to explore the search space (which is the sentence database). Inverted Indices on words and sentences are used to search the database swiftly and make the decryption process faster. The BlackBoard Design Pattern is followed in the implementation.

At a high level the main components of the system include

➢ Cryptographer The main entry into the application which interacts with the user to get the input and initializes the various other components like Blackboard,Controller etc.

➢ BlackBoard Central place that maintains the state of the decryption.

➢ Controller Interacts with the various pieces of the system and is the driver of the actual decryption process.

➢ Knowledge Sources The main intelligence engine that do decryption based on intelligence acquired via mining the internet or any text database.