Okay, okay. Just can’t wait, can you?

Since there’s less than two weeks left and no sign that my prediction was accurate or will become so in the time that remains, a description of the decoding process follows. Applying it will reveal the encoded message for the benefit of those too impatient to wait another fortnight.

- The base character set consists of the 95 characters given here. In the order in which they are listed, each character is numbered according to its position starting at zero. Thus, for example, the character “8” has the value 8, the character “J” has the value 20 and the character “j” has the value 46.

- Starting from the beginning of the encoded message, the characters are arranged in sequential groups of three where each such group represents a base-95 integer. For example, the three-character sequence “L8r” represents the decimal number 22×95
^{2}+8×95+54 = 199,364 because “L” ≡ 22, “8” ≡ 8 and “r” ≡ 54. (Do you see the parallel with representation in base 10? The base-10 symbol triplet “739” translates as 7×10^{2}+3×10+9 = 7×100+3×10+9 = 700+30+9 = 739. Also, “L8r” is just an example; it doesn’t occur in the encrypted message.)

- Each triplet value is then subjected to the modular transform x’ ← (12,347×x+509,099)
*mod* 95^{3} = (12,347×x+509,099) *mod* 857,375. You’ll need at most 11-digit accuracy for this, which any halfway decent calculator or spreadsheet will provide. Also, this all looks quite scary but isn’t really, so don’t let your eyes glaze over just yet. The “*mod* **a**” operation indicates “remainder after division by **a**.” So, if x = 199,364, then the transformed value x’ ← (12,347×199,364+509,099) *mod* 857,375 = 2,462,056,407 *mod* 857,375 = 532,782 because 2,462,056,407 leaves a remainder of 532,782 when divided by 857,375. (Question for the reader: Why is the modulus or radix equal to 95^{3} = 857,375?)

- The result of the modular transform is always an integer that can be expressed in base 95, as described in part 2 above, and the result of the modular transform so expressed in base 95 gives the original triplet of characters. Continuing with our sample value, 532,782 = 59×95
^{2}+3×95+22 → “w3L” because 59 ≡ “w”, 3 ≡ “3” and 22 ≡ “L”. Thus, “L8r” decodes to “w3L”. This process is applied to each of the successive triplets so as to decode the entire message.

Bonus question for the reader: Parts 1, 2 and 4 described above deal with the mechanics of translating between our ordinary decimal (base 10) system of numeration and one in base 95 (because we have 95 symbols, each of which can be thought of as a digit). The trick occurs in part 3 with the application of the modular transform that effectively decodes the message. The bonus question is what, exactly, must we do to encode a message for the above process to work? (Hint: “Brute search” is not the correct answer. There is a direct, explicit, precise and efficient encoding process that does not involve guessing.) Another bonus question for the reader: What restriction(s), if any, apply to our modular transform so that it should be fully reversible?

In closing, this isn’t all just for the fun of numerical obscurantism. The techniques presented illustrate some basic key concepts of information theory, cryptography, number theory and group theory – or at least hint strongly at them – even despite my prognostication being off the mark.

'Luthon64

« *Last Edit: June 22, 2010, 22:18:08 pm by Mefiante* »

"Sensitive" people are now carefully examining the entire universe, trying to find something to be "offended" at. It won't stop until such time as the "offenders" learn to stop apologizing, and saying "freck off" instead. — **brianvds**, The ShoutBox Classics, 02/07/2018.