Cryptography Tutorial Try it Now! Algorithm Analysis Future Extensions Source Code Sources
I recognize there is a great deal more I could do with my project; however, I am satisfied with the work I have done on my project. Therefore I consider this my completion point. This page describes unaddressed issues, enhancements, and extensions of the project that could be made in the future.

  • Due to time constraints, my analysis of the various algorithms can only be considered a PRELIMINARY analysis. Significant more testing is required to make justified conclusions: analysis on each algorithm individually, determining the breakinig point for all algorithms, comparison between algorithms (space, time, and Big O), and determining the algorithm that should be used based on circumstances/data availablity. However, some of the following changes should be made prior to the analysis to ensure the results are based on the most effective versions of each algorithm.

  • When the key length is equal to the plaintext length and the key is perfectly random, this XOR encryption method I used is considered perfectly secure. But, does key length really have to equal the plaintext length for the encryption to be secure? Where exactly is the critical point?

  • What if a random key is used instead of an actual word? How will this effect the frequency analysis to determine the key?

  • I used a cipher text only attack (the only available resource to analyze is the encrypted ciphertext). Consideration should be given to various types of attacks, such as cribbing (knowledge that a certain word(s) appears in the plaintext) and taking advantage of multiple ciphertexts in which the same key was used (additional information is gained under these circumstances because you KNOW the keys are overlapping starting at the beginning of the ciphertext - however, how do you determine intially that the same key was used?). How can the various algorithms take advantage of this knowledge?

  • My final code requires “slimming down” to increase efficiency.

  • A spell checker/dictionary could be added to increase accurracy
    • Instead of giving the user all cyclic shifts of the key word on the Find Relative Shifts between Key Letters Algorithm, only give the user actual words
    • When using the other two algorithms to find the plain text, a spelling-auto-correcter would improve accuracy

  • In the Permute through All Shifts or Basic Frequency Analysis Algorithms, allow the user to select specific letters in the keyword or plaintext to change and display the effect of these changes.

  • The Kasiski Test's greatest common divisor algorithm could be altered to throw out “bad” data i.e. find the number(s) that are preventing a common GCD and ignore those numbers

  • Combine the various algorithms so they can share the results and base results off of one another.

  • Finally, how about considering a new method of encryption?


Please read the code documentation as other suggestions and/or issues with my programs may be documented within the code itself.