Installation
I have packaged a jar file containing all the source files necessary to compile
and run my program. This is for convenience sake: you can look at the code and/or
run it depending on what you prefer. The first thing you must do is unpack it:
jar xf JeffCrypto.jar
This will pop things out all over the place, so I recommend making a folder and
putting the jar file in there first. This will keep everything nice and neat. If
your aim is to run my program, the next thing you should do it compile it:
javac CryptGUI.java
Now you should be set to run or view the code. Whichever you want. To run it:
java CryptGUI
Using the program (Important info, please read!!)
When you run the program you are faced with a little gui program that can do some
powerful things to your files. Be careful when using this. I recommend backing things
up before trying the program out so that you can see how it works without fear of
losing anything. DO NOT LOSE THE KEY.
What Algorithm?
When you first start, you are faced with many decisions. The first of which is probably
which algorithm to use. Let me give a quick overview of each one. DES was the
"Data Encryption Standard" for a long time. Unfortunately it only accepts small
key sizes, so it is considered possible to brute force your key(even though it isn't
considered broken). DESEDE stands for "DES: Encrypt, Decrypt, Encrypt". It passes
through the algorithm three times with three different keys, doing exactly that:
it encrypts your file first, decrypts it with a different key next (so it
is not undoing what it just did!), and then encrypts it again with a new key. This
is much stronger than DES, so I recommend it if you are looking to use the DES
algorithm.
Our final choice is AES, which stands for "Advanced Encryption Standard" and it really
is just that: the encryption standard. Most people use this for encrypting their files.
What Do I Do Now?
Well, after picking an algorithm, you should pick a key size: the bigger, the better.
Often times we only use smaller keys when we are worried about encrypting something
really big (so time is an issue) or we need to worry about space issues (i.e. thumb drive
or something). You can go ahead and hit that "Encrypt" button if you are ready. The
important thing is to remember what algorithm you used and what size key you used and where
you saved your key. All three of these must match for decryption to work properly!
This is where your concern for losing data should be. The most probable problem that I
see is that you accidentally lose your key. There is no way to recover your encrypted
file if this happens (other than a brute force attack against your own encryption). This
program is not a toy. It really does completely scramble the bits on your harddrive into
incoherence. You must know your key size, algorithm, and key itself to bring those bits
back to something coherent.
Where is this program heading?
I would like to see a lot more options, but I got a little tied down with the cluster
project before I could do much with it. This of course means more room for error
and lost data if you forget how you set something up. I'm not really aiming for that, and
it is currrently pretty straight forward (which was the point of the project). But I would
like to have the option to not write your key to file because that is vulnerable to discovery.
Also, there are many great options for password-based encryption using these same
algorithms, so you can remember a password you choose instead of a random key. I
would also like to add more algorithms because if you get sent a file that's encrypted
with something else, you can't use this program to decrypt it. That could be an
annoyance.