Triple Helix Cryptography was my college senior project. It is a customizable cryptography system. Let me explain each part of that in case your brain just exploded; if it didn't, you can skip this section.
System - a computer system is a collection of smaller processes or applications that are all working together to accomplish a common goal. One system you may be familiar with is the Microsoft Office system, which includes Microsoft Word, Microsoft Excel, and Microsoft Powerpoint, to name a few. These programs are all highly interconnectable and comprise a good example of a system. The Microsoft Office system (or suite, as it's often called) is actually a much larger system than Triple Helix Cryptography, but they still share the classification. Other examples of systems are Microsoft Windows, Adobe Photoshop, and Norton Antivirus. They are all different sizes, but each one can be broken up into smaller parts that, when working together, do basically the same thing.
Cryptography - cryptography is what keeps your credit card numbers, phone numbers, and other private information, safe as they travel across the internet. Cryptography can be split into two parts--encryption and decryption. Encryption involves mangling the data up, usually in a clever mathematical way or using a lengthy and confusing pattern, so that as it travels over the internet, the data will be unintelligible to anyone who receives it by mistake. When it arrives at its destination, if it truly is the data's proper destination, the recipient or that person's computer will be able to decrypt the data to its original state, usually by means of a secret key or password. Depending on the method of cryptography used, this secret key or password might be known only to the sender, only to the recipient, or both. The security of this key or password is of the utmost importance, as is the process used to encrypt and decrypt the data.
Customizable - What sets Triple Helix Cryptography apart from other cryptography systems is its malleability. It was designed for both basic and advanced users. In normal mode, a basic user can decide which cryptography algorithms he or she wants to use to encrypt the data, and can also choose the order in which those algorithms are used. The recipient must know all the passwords and/or keys used, as well as the order of encryption, to be able to correctly decrypt the data. THC is not a data transmission system; it is meant to be a personal cryptography system, whereby a user encrypts the data on their own and sends it via whatever medium or client they prefer. The recipient likewise decrypts it using the program. In addition, advanced users can open a module editor window in which they can program their own cryptography module, called a Helix, to use when encrypting or decrypting. Users can also import modules written by others. At this time, THC only supports the Java programming language for module creation, as THC itself is written in Java. The module editor supports syntax highlighting, but there are no debugging tools built into the program. It is preferable to use an IDE to code and debug the module, then paste the content into the module editor of THC and let it do the rest of the work for you. However, everything can be done in the program itself.
For all you engineers or nerds who want to know more, this section delineates what goes on inside THC's guts in a little more detail.
Triple Helix Cryptography makes extreme use of polymorphism, multithreading, inheritance, mathematics, and Java's dynamic class loading to do everything it is able to do. THC is so named because the class that makes the "magic" happen is the Helix class, and it represents a single module that can encrypt or decrypt data upon request. It runs three Helixes in separate threads, then passes the data between them using several specialized, shared mutex Strings, which are synchronized for multithreading. This speeds up the encryption and decryption process considerably, especially when running the program with complex, time-consuming cryptography methods. As soon as a single character has been encrypted, or as much as the individual method can encrypt at once, it is passed to the next Helix immediately. The reason for the word "triple" in the title is that the program only supports up to three individual Helixes at once.
The program has two modes: normal mode, for basic users, which hides a lot of the more advanced options that basic users would not want; and advanced mode, which displays everything and allows advanced users access to the module editor and the ability to finalize a completed module, compiling it with the Java compiler and making it ready for importing into the program so it can be used.
Triple Helix Cryptography also comes with three default modules to use, in case basic users are unable to download and import modules that others have written, or are unable to write their own. Granted, the default modules are not as powerful or safe as many of today's common cryptography methods, but when combined in an unknown order, each with its own password or key, or multiple passwords and keys, it becomes a little tougher to crack. The three default methods included are: the Vigenere cipher, which has an Affine variant option that increases its strength; a matrix cipher Helix which can do either the transposition or the playfair cipher, or both; and finally, a method that I designed and implemented, called Chain Link Encryption, which is a form of transposition cipher, although it is more complex than most transposition ciphers.
Also an interesting thing to note--to increase user-friendliness, the program automatically reverses the order of the algorithms used when decrypting, as opposed to encrypting. Think of it this way: if you have three cryptography functions (call them a, b, and c) that take some message x and return an encrypted message y, then the encryption function using them in alphabetical order would look like this:
c( b( a(x) ) )
The original message is passed to a first, which then sends its result to b, and then c finally encrypts b's result and we have the final encrypted message. But to decrypt them, we must reverse the order of the methods, or else we will be using a's decryption algorithm to decrypt the outmost layer, which in fact was encrypted by c instead of a. So what we need to do is use the algorithms in reverse order to decrypt properly:
a( b( c(y) ) )
Now, c is performed first, which decrypts the outer layer that c originally encrypted. Now that c's method is out of the way, b encrypts its own layer, and finally, a finishes the decryption and returns the data to its original state (assuming the user entered the correct data).
So what Triple Helix Cryptography does is get rid of this whole confusing mess so that basic users don't have to worry about it. (Advanced users don't either, but they will probably understand what is happening better and simply find it more convenient). The order is automatically reversed upon decryption, so you put the same three modules in the same three slots they were used to encrypt, in the same order, and everything works properly.