 All about flooble | fun stuff | Get a free chatterbox | Free JavaScript | Avatars  perplexus dot info  covert western union (Posted on 2006-02-07) The following 2-phrase, 10-word message was encrypted by converting each word in the original text from base 36 to base 10 (treating each letter as a number).

Next, the resulting numbers were concatenated to form one very long number:

3188696725382955872716533682296997335...
5701338323073559429444643676946239584...
715731974947334325407967846302738783

1) Identify where to place word breaks and decipher the message. (Easy)
2) Determine what each word in the message has in common. (Harder)

 See The Solution Submitted by Mindrod Rating: 4.6667 (3 votes) Comments: ( Back to comment list | You must be logged in to post comments.) The easy part--partial spoiler | Comment 2 of 5 | The following program is limited by QuickBasic to numbers of 15 or fewer decimal digits:

DECLARE FUNCTION isWord# (w\$)
DATA 31886967253829558727165336822969973355701338323073559429444643676946239584715731974947334325407967846302738783
DEFDBL A-Z
CLS
DO
max = 15
IF LEN(x\$) < max THEN max = LEN(x\$)
FOR i = 1 TO max
s\$ = LEFT\$(x\$, i)
n = VAL(s\$)
IF n = 0 THEN
w\$ = "0"
ELSE
w\$ = ""
DO
q = INT(n / 36)
r = n - q * 36
n = q
IF n > 0 OR r > 0 THEN
w\$ = MID\$("0123456789abcdefghijklmnopqrstuvwxyz", r + 1, 1) + w\$
END IF
LOOP UNTIL n = 0
END IF
IF LEN(w\$) > 2 THEN
IF isWord(w\$) THEN EXIT FOR
END IF
NEXT
IF isWord(w\$) THEN
IF flag THEN PRINT : PRINT : flag = 0
PRINT w\$, "   "; s\$
x\$ = MID\$(x\$, i + 1)
ELSE
IF flag = 0 THEN PRINT
COLOR 14: PRINT LEFT\$(x\$, 1); : COLOR 7
flag = 1
x\$ = MID\$(x\$, 2)
END IF
LOOP UNTIL LEN(x\$) = 0
END

FUNCTION isWord (w\$)
n = LEN(w\$)
w1\$ = SPACE\$(n)
OPEN "\words\words" + LTRIM\$(STR\$(n)) + ".txt" FOR BINARY AS #2
l = LOF(2) / n
low = 1: high = l
DO
mid = INT((low + high) / 2)
GET #2, (mid - 1) * n + 1, w1\$
IF w1\$ = w\$ THEN isWord = 1: CLOSE 2: EXIT FUNCTION
IF w1\$ < w\$ THEN low = mid + 1:  ELSE high = mid - 1
LOOP UNTIL low > high
isWord = 0
CLOSE 2
END FUNCTION

It finds:

`encoded          31886967253telegraph        82955872716533`
`68229699733557013383`
`alleged          23073559429`
`44464367694623`
`funded           958471573brash            19749473frogman          34325407967assassin         846302738783`

The first undecrypted string is too long to fit into a double floating point variable, the second is, it turns out, not in the word list.

UBASIC handles larger numbers, but not binary files (for the words), but can show the possibilities:

`   10   N1=68229699733557013383   11   for L=1 to len(cutspc(str(N1)))   12   N=val(left(cutspc(str(N1)),L))   15   S\$=""   20   while N>0   30     R=N@36   40     Q=N\36   45     New\$=mid("0123456789abcdefghijklmnopqrstuvwxyz",R+1,1)   50     S\$=New\$+S\$   60     N=Q   99   wend  100   print S\$,left(cutspc(str(N1)),L)  110   next L`

which finds

`6       61w      68iy      68259i     68221gn9    68229emgo    682296428mx   682296914medf  68229699ba7zqd  68229699734u7xbp 6822969973vce7991 682296997338pfy0kif        6822969973352f2fg5p4b       6822969973355o6oahkz79       682296997335576puqwvts0i      6822969973355701v6jh4u9s51     6822969973355701intercepted     6822969973355701356m63lg365zp    6822969973355701331fu5ozygvpnx6   6822969973355701338eedkxzkot4n7r   68229699733557013383`

which means intercepted is a word in the plaintext, but still leaving 383, which could be an.

and similarly,

4       4
18      44
cc      444
3fi     4446
yb4     44464
9j37    444643
2naw4   4446436
qh0xb   44464367
7cq998  444643676
21jakkh 4446436769
kfcxpou 44464367694
5o9ld4wi        444643676946
1kqnxnd12       4446436769462
frenchman       44464367694623

indicates frenchman is a word in plaintext, not in my word list.

That resolves to: encoded telegraph intercepted an alleged frenchman funded brash frogman assassin.

 Posted by Charlie on 2006-02-07 11:01:33 Please log in:

 Search: Search body:
Forums (0)