Coding Theory

advertisement
Coding Theory
Your project has two parts - encryption, and error-correcting codes. They are similar in
that both are forms of encoding a message to be communicated and later decoded. They
are different in that the purpose of encryption is to hide the message while the purpose of
error-correcting codes is to correct (or at least detect) minor accidental changes induced
in a message by a noisy channel.
(0) Overall: explain the goal of digitally sending messages. Explain how a plaintext
message in letters can be written down using only numbers. Explain modulo arithmetic
and how it might be helpful (eg letters might be thought of as modulo 26, and binary stuff
is modulo 2).
(1) Encryption: Explain how matrix multiplication can be used to encrypt and decrypt
messages. Explain how monoalphabetic substitution works and how it can be broken (I
will give you some encrypted text to break). Explain why these techniques are harder to
use on messages encrypted by matrix multiplication. Try to come up with an algorithm
to break the matrix multiplication encryption scheme. I'll also give you matrixmultiplication-encrypted stuff to try to break. I can help by giving some references (such
as the webpages Rodolfo pointed out to me) and answering questions.
(2) Error-correcting codes: explain the problem of noisy channels and why this messes up
messages. Explain why just repeating bits is not the best solution. Explain Hamming
distance, and the Hamming (7,4) code. Can the Hamming (7,4) code correct 2 errors in
one character (one 7-bit chunk)? How many errors at most can it always detect or
correct? Can you generalize the Hamming (7,4) code? Explain the matrix theory behind
it. Explain parity checks. If you know of any other error-correcting ideas, feel free to ask
me / include them. Also explain why the Hamming (7,4) code is not good for encryption
-- come up with a way to "break" such codes, and I'll give you encrypted text to try to
break.
Download