This tutorial covers some popular encryption methods. To begin you
will need some things
1. You need the encrypted data
You will have to find the encrypted data. Sometimes its hidden in a
webpage, disguising itself as something different. Sometimes it is
just written somewhere in the open, but the passkey or the
referencing alphabet is hidden.
2. You need to know what the crypt
represents
If you have a crypt, but you do not know what you are trying to find
in, it you will have a much harder time. You should first try to
guess what the result of the decryption is. It could be a plain
text, or a picture, maybe even a binary program. And if it is text
it could be special text, like mathematical expressions, coordinates
or just numbers. There are many possibilities, but usually only a
few make sense.
3. You need to know how it was encrypted,
or at least have a rough guess.
To decrypt the crypt you will first have to know how it was
encrypted. There are endless possibilities. First see if you can
find out how it was encrypted by investigating the background of the
guy that encrypted it or the circumstances of the crypt. There may
be hints around. A professional cryptanalysist may need nothing but
the crypt to get a good idea how it was encrypted, and even if he
has no idea he may still decrypt it by using professional methods.
But here for us, you should know how it was encrypted at some point
during decryption.. ;)
4. Now what means something is encrypted?
Lets say I have the word: "hello". Now I reverse the word, which
gives me "olleh". This is a simple encryption. If someone sees this
text on a piece of paper he would probably think its a foreign
language: "?uoy era woh yeh." But you know its plain english text,
and can easily decrypt it. There are many ways to encrypt text to
make it look like no text at all. If another person knows how it was
encrypted, he can easily decrypt it and get the message from the
crypt. First I want to point out some basic encryption methods:
1. Caesar cipher
Simple cipher that shifts the alphabeth by some number of letters. "abcdef"
shifted by 2 becomes: "cdefgh". ROT-13 for example is a rotation of
the alphabeth by 13 letters. ROT-13 is so popular because there are
26 letters in the alphabet so its easy to encrypt it then encrypt it
a second time to get it back to normal. You can write small programs
to look for this kind of easy encryption (or just use rot13.com)
2. Mono-alphabetic substitution
Replaces every letter with some other letter from the alphabeth. No
letter can be used twice of course. You will need a key that holds
the mapping of the characters. The key has two parts. The first part
is the original alphabeth and the second part is the encryption key.
Lets say "abcdef" is mapped to "fedcba". That means the word "beef"
becomes "ebba". To crack those ciphers you will need to look for
more frequent letters and words and guess the text... you will need
a fairly large sample of ciphered text for it to work out. The word
"the" for example is often used in the english language, for other
languages it may be other words of course...
3. Vigenere cipher
Every letter in the word gets shifted by a certain amount that is
set by the password. This means the following... lets say the
password is "bcde". Now say a=1 b=2 and so on... that means the
first letter of the original text is shifted 2 letters, the second
one is shifted by 3 letters and so on. This works great until you
run out of the password characters. (Its only 4 characters long)
Then you just start from the beginning again, in this case with "b"
(=2). Notice how the A is converted to a number, here one (1) in the
example. This is referencing by position. We talk about that later a
bit more detailed.
4. One time pad (with XORing)
The safest version of encrypting is a one time pad. You have a long
line of random letters. Those letters are known by you and the guy
that needs to decrypt the message. You now encrypt every letter of
the original text with the letter at the same position in that
random letter line. The result is the cipher that you send away. The
guy on the other end has the one time pad and can extract the
original letters by decoding with the one time pad random letters.
The only bad thing is: you got to get the one time pad to the other
side, hopefully without anyone else getting a copy of it they can
use to decrypt your message. Additionally the receiver needs to know
which pad to use for the decryption if there is more than one pad
available.
Now how do you encrypt the two lines of letters with each other? You
need to XOR them. First convert them to binary. A binary number
consists only of 0 and 1. You can describe any letter with a binary
number, either using the Ascii code of the letter as a base or using
an alphabeth numbering, like A=1, B=2 or similar. Now after both
strings are converted to binary you have a very long line of 0 and
1s. You still know which numbers are representing which letter
because you wont delete leading zeros, making it so that for example
every 8 numbers represent one letter. (8 bit code)
Now XOR the two strings by using an exclusive-or method. This means:
if there is one 1 in between the two, the result is 1. If there are
two 0 or two 1, the result is 0.
0 xor 0 = 0
0 xor 1 = 1
1 xor 0 = 1
1 xor 1 = 0
The resulting string can be decrypted by xoring with the known
passkey (the one time pad you transmitted earlier to the other
side), and then finally by converting to letters again by using
either Ascii codes or alphabetic numbering. (Meaning: By referencing
the position in a certain known alphabeth).
Converting numbers to letters or vice versa
You already noticed how in those examples letters are becoming
numbers or vice versa. Generally this is done by mapping letters to
numbers in one way or another. Using computers there are generally
two ways of mapping. The first one is the Ascii Table, which
converts every character (letter, number, special characters) to a
certain number code. You can easily find out about Ascii using a
search engine. The second one is Unicode, which is a replacement for
Ascii codes that became necessary cause Ascii codes are limited to
representing 255 letters, leaving not enough room for all the
different letters that some languages have, like chinese for
example. Again, use a search engine to learn about Unicode.
Now, not using computers, you can have a reference alphabeth and
convert a letter to a number by its position in the alphabeth, and
vice versa. Lets say the alphabeth is "gcqlxebm", then G = 1, C = 2,
Q = 3. The most natural alphabeth is of course "abcdefghijk...", so
its used quite often.
Another method to convert letters to numbers is using hex numbers.
Hex numbers can have the letters A-F, representing the digits 10-15,
which means if you have certain numbers they will only consist of
letters... For those who dont know, HEX number are based on 16
instead of base 10 as our normal numbers are.
Converting numbers to numbers
This may sound easy, but its important for cryptography. Remember
that you can always change the way something looks by changing it
into some other number system. Our normal system is based on ten,
probably because we have ten fingers and toes. This means that you
can easily make a number totally unusable to an attacker if you
change it to another base without him knowing. A number based on 16
may look the same as a number based on 10, but its a totally
different value. So make sure you know what you are looking at. If
you have a very large sample of numbers and not a single digit is
above 3, then it is probably the base 4 system. Generally, it can be
ANY base number. You better find out which one.
Thank you (zer0w0rm)