Issue 2 - April 2000

Data encryption

Writer: LordAcidus

Ohhhh...we're all a little closer thanks to the internet. Or so everyone tells me. Personally, I don't want to be any closer to the 50 year old single white male child pornography photographers out there in all the AOL chat rooms, or on IRC. I also am sick of the media saying how about all those dangerous "hackers" out there. OH GOD NOT THE HACKERS! THEY MIGHT DO SOMETHING TO ME! AAHHHH, TECHNOLOGY IS EVIL, FLEE TO THE BADLANDS, THE EVIL HACKERS WILL DESTROY US ALL!!!!!!!!!!

Yes, they tend to blow things out of proportion. However, security is an important thing. But how do you get good encryption software, that is easy to use, and IMPOSSIBLE to break? Simple, make your own.

Now listen up and listen good. I had to self-teach myself all this stuff. I didn't even have books on the subject, so between sleeping in AP economics, and looking at breasts in Latin, I went over the basics of encoding/decoding in my head. First of all, you must have a program. This program can take a file, use some magic wand, and convert the file into a big mess. Then you take the mess, and store it/send it/print it whatever. When you decode it, the program has to use the same magic process and revert the file to its original state.

Granted "magic" isn't a very good definition of what the program does. Encoding a file is a very simple idea. What the program does is to read through the file, and take each character, and change it based on what is called the key. Let's say the character being read is "A" which is ASCII code 65. Ok, the program takes 65 and adds 9 to it (9 being the key). The new value is 74, which is the ASCII code for "J". "J" would then be written to the file.

Key%=9
Char\$="A"
NewChar\$=CHR\$(ASC(Char\$)+Key%)
PRINT NewChar\$ 'Displays "J"

Ok, if that's how it works, then I looked at it from the other end. How would I break a coded file. Yes, I have broken files before, and it's pretty easy. It is easy because each character changed by the same value, as in the case of our example, it was 7. I have a program on my Computer that I wrote called "Simple_Break.bas" It just reads through an encoded file, and tries different numbers as keys. It then looks at the file and looks for the words "the" "and" "is" "was" "it" and other common words that I got out of the 1996 World Almanac. Granted this doesn't work on .EXE files, but it is very good a breaking text files. Btw, I call breaking encoded files breaking. "Cracking" is disabling a copyright protection of password on a game, common in WareZ.

So, since you don't want a program that has the same key for each character, what do you do? Well, I soon thought that every key must be different. Like, you type in a password, like "dog", and the computer takes each letter, and matches it with a letter in the key. It takes the ASCII code of the original character, add the ASCII code the letter of the key, and stores the result. If the result is greater than 255, it loops around to 255 - NewCode%. The next letter is moved to, and the next key letter is used, and the process repeats. When the last letter of the key is used, it loops back around to the first letter of the key. This is easier to show then tell. We will encode the sentence "Qbasic will never die!" with the key "dog"

Original: Qbasic will never die
key : dogdogdogdogdogdogdog
After : `�ExOE,`DDUOOOY� OEOId

First notice that the key "dog" is only 3 letters long. Since this is a lot shorter then "Qbasic will never die", the key is repeated when it gets to the end. Also notice that the space after "Qbasic" is represented by the "," character. Yet the space after "will" is represented by "O". Do you realize how great that. Unless you know the EXACT key letter by letter, there is no way to crack it.

Now notice what happen to the same sentence if we use "Happyness" as the key: ( Yes I know it is Happiness, but we are going to use Happyness)

Original: Qbasic will never die
Key : HappynessHappynessHap
After : (tm)A�aY�...^s'I�__,E+"EO

COMPLETELY DIFFERENT ENCODING! See what I mean, it is incredible. This is IMPOSSIBLE to break except under 1 condition. The breaker knows what the very beginning of the file should look like. By working backward, I could get the key. Only under this one condition could I figure out the key.

Check out ENCODE.BAS (included with this issue of QBCM -ed) for the code of my encoder/decoder, and feel free to use it. Remember, there is really no limit to your key. Make it a line from your favorite song. Make it nonsense, make it anything you want. I use this program a lot when dealing with credit card numbers when I email them to friends. Enjoy!