A cipher differs from a code, in that a cipher replaces letters, or numbers, with another, whereas a code can replace many letters or words with just one. For example, the phrase "Meet me tonight" can be replaced by the code 1254, or "blue", or whatever. If we encypher the message, however, by replacing the individual letters with the key to the right on the keyboard we get "<rry ,r ypmohjy". This is known as a substitution cipher. The other type of cipher is called transposition. This is simply taking the letters of the message and re-arranging them, as in an anagram:
M | M | N | T |
E | E | I | X |
E | T | G | Y |
T | O | H | Z |
Reading the letters vertically produces the message, with a little extra letters to make a square number. Horizontally produces the code, MMNT EEIX ETGY TOHZ.
Digital Ciphers
Instead of working on letters of the alphabet, digital ciphers work on bits, or blocks of bits, usually using an XOR function. For example, convert the message to ASCII:
M | e | e | t | m | e | |
77 | 101 | 101 | 116 | 32 | 109 | 101 |
1001101 | 1100101 | 1100101 | 1110100 | 0100000 | 1101101 | 1100101 |
The XOR function changes the bits such that unequal bits produce a 1, while equal bits produce a 0. If we now use an ASCII key phrase:
Plaintext | M | e | e | t | m | e | |
ASCII (Decimal) | 77 | 101 | 101 | 116 | 32 | 109 | 101 |
Binary | 1001101 | 1100101 | 1100101 | 1110100 | 0100000 | 1101101 | 1100101 |
Keytext | S | e | n | d | t | h | |
ASCII (Decimal) | 83 | 101 | 110 | 100 | 32 | 116 | 104 |
Binary | 1010011 | 1100101 | 1101110 | 1100100 | 0100000 | 1110100 | 1101000 |
XOR Result | 0011110 | 0000000 | 0001011 | 0010000 | 0000000 | 0011001 | 0001101 |
Decimal | 30 | 0 | 11 | 16 | 0 | 25 | 13 |
The result of XORing is a series of mostly unprintable ASCII characters, but the stream now bears no relation to the original message. For example, the three "e"'s in the message are now all different, 0, 11, and 13.
The mechanism above is roughly how a Stream Cipher works. Instead of a key phrase, the cipher generates an endless stream of seemingly random bits which are XOR'd with the plaintext stream to produce the cipher stream.
No comments:
Post a Comment