MathWork01 Part 01 (intro) MathWork01 Part 02 MathWork02
(Reposted on 11 Oct 2003, remark that I just never took the time to check the 'number of decoding possibilities as found below. They could be wrong, so check stuff for yourself it you can.)
Introduction: On this page a 'worked example' of a text
made from 700 letters. The letters are chosen from an alphabet
containing 256 different symbols. Just try on your keyboard and type
ALT159 (Keep the ALT button down while typing 159). With a bit of luck
you see the symbol ƒ (the old Dutch guilder symbol). When you type
ALT415 (415 = 159 + 256) you get the same symbol again, also for every
natural number k we have ALT159 = ALT(159 + k256). This means we can view the letters in the alphabet as being the natural numbers modulo 256. Written out in binary representation; 159 = 10.011.111 (8 binary places) while 415 = 110.011.111 (9 binary places needed). The PC ignores the first 1 and this is very handy to our planned use. |
||||||||||
Let's start with some hypothetical text of 700 symbols
(including the blank spaces, from the first to the last we need exactly
700 symbols).
Two persons want to exchange this text over the internet, simply by
decoding the original text and send it as (attachment to) some email. Or
as email itself. For coding&decoding these persons only use the method described in
part I, but they repeat this a lot of times with different 'building
blocks'. Start of the coding: The 700 symbols are filled up with zero's (or with the first part of the original message) to the nearest power of 2, in this case to 1024 symbols. Remark 1024 = 210 and now we can devide the 1024 symbols through all the numbers 21, 22, ....., 29, 210 to define de 'building block' of the coding run at hand. Below we look at the parameter p = (1, 2, 3, ..., n-1, n).
(To finish some later day....) Start of coding:
|
||||||||||
Now each neighboring pair of ciphers is added (and may be corrected by 10):
|
||||||||||
You see; we have now 9 ciphers and so there must be some
loss of information. If you try do decode the 9 cipher code you see
there are 10 possible solutions, this fits with the idea of having 1
less cipher. If we would, for example, know the first 'true cipher' (the 3) then it would be easy to decode this string of 9 ciphers into the original sting of 10 ciphers. But that would be a little to easy to decode. So we proceed further, from the string of 9 ciphers we form a new string of 8 ciphers in exactly the same way:
|
And so we go on and on until we are left with only one
cipher, you can do the calculation for yourself. If I did not make a
error, the last cipher will be 5.
Now we add the first true cipher 3 and the last calculated 5. We add
and find 8. |
|||||||||
If you know how the coding was done, the decoding is just
plain sailing (try it yourself).
As far as I know (but I am very limited in my knowledge on this), this method is not in use anywhere (and if it would, no one would tell because the decoding is so simple). |
|||||||||
You can easily change this method, for example, you could
transform the original 3145926554 in two steps to 94359919 and then
think of something to produce the 2 extra ciphers in front you need to
decode it. All other kinds of changes could be made, you could work with building blocks of 2 ciphers and add these blocks together (and lower by 100 if needed). Just as the latest example; the 3145926554 must be split up like this:
And so you calculate:
And just follow the same scheme as in the 'one cipher' manner. You can repeat different method's after one another because there is no information loss. Because this method only will work if all bits are there (so you must have 0% 'package loss') it would be wise to combine this with some kind of 'self repairing' code. A self repairing code is, for example, found in all your CD players (some extra information is added to the original info and you can withstand a fair portion of information loss before you run into trouble). At last, you could use a building block of 1 'cipher' but chosen from
an alphabet of 128 different 'letters' and each letter is represented
via a number 000, 001, ..., 127. Just like the Alt159 = Alt415 (but that
is with 256 different letters...). So you can
code text as well (there is no need to restrict this to numbers....). |
|||||||||
We leave this cute little math alone, it's free to use
like most of my creations.
If you find a good place to use this, please inform me (just out of curiosity).
And if you get rich from it, don't forget me please...
I will not write all kinds of theorems on this, if you are a
mathematician you can do that for yourself. |