{VERSION 3 0 "IBM INTEL LINUX" "3.0" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0 1 0 0 0 0 }{CSTYLE "2D Math" -1 2 "Times" 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 }{CSTYLE "2D Output" 2 20 "" 0 1 0 0 255 1 0 0 0 0 0 0 0 0 0 } {PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Maple Output" 0 11 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 3 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 11 12 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }1 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 256 1 {CSTYLE "" -1 -1 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 257 1 {CSTYLE "" -1 -1 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }} {SECT 0 {EXCHG {PARA 256 "" 0 "" {TEXT -1 224 "1. Decode the following phrase, which was encoded using a affine encoding cipher on a 27-lett er alphabet (the letters a-z and a blank):\n message = \"xgb dkjvmbk ffcmtkrv m lkaerask mdbmwkfmezremzkmxrcmkkmfvkrx mxgvkmaskrvsc\"" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 87 "message := \"xgb dkjvmbkffcm tkrv m lkaerask mdbmwkfmezremzkmxrcmkkmfvkrx mxgvkmaskrvsc\";" }} {PARA 12 "" 1 "" {XPPMATH 20 "6#>%(messageGQdoxgb~dkjvmbkffcmtkrv~m~lk aerask~mdbmwkfmezremzkmxrcmkkmfvkrx~mxgvkmaskrvsc6\"" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 145 "First, find the most commonly occuring charact ers. This is much easier if you arrange that all copies of the same c haracter be grouped together." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 31 "nums := convert(message,bytes);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%%numsG7eo\"$?\"\"$.\"\"#)*\"#K\"$+\"\"$2\"\"$1\"\"$=\"\"$4\"F(F+ \"$-\"F/\"#**F.\"$;\"F+\"$9\"F-F)F.F)\"$3\"F+\"#(*\"$,\"F2F4\"$:\"F+F) F.F*F(F.\"$>\"F+F/F.F5\"$A\"F2F5F.F8F+F.F&F2F0F.F+F+F.F/F-F+F2F&F)F.F& F'F-F+F.F4F6F+F2F-F6F0" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "s ort(nums);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#7eo\"#KF$F$F$F$\"#(*F%F% \"#)*F&F&\"#**F'F'\"$+\"F(\"$,\"F)F)\"$-\"F*F*F*\"$.\"F+\"$1\"\"$2\"F- F-F-F-F-F-F-F-F-F-F-\"$3\"\"$4\"F/F/F/F/F/F/F/F/F/F/F/\"$9\"F0F0F0F0F0 \"$:\"F1F1\"$;\"\"$=\"F3F3F3F3\"$>\"\"$?\"F5F5F5\"$A\"F6" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "convert(%,bytes);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#Qdo~~~~~aaabbbcccddeeeffffggjkkkkkkkkkkkklmmmmmmmmmm mmrrrrrrssstvvvvvwxxxxzz6\"" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 52 "Co nclusion: 'm' is the most common, followed by 'k'." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 40 "Alphabet:=\"abcdefghijklmnopqrstuvwxyz \"; " }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%)AlphabetGQ " 0 "" {MPLTEXT 1 0 123 "ToNum:=proc \+ (text)\n local i;\n global Alphabet;\n\n [seq(SearchText(substring( text,i),Alphabet)-1,i=1..length(text))];\nend:" }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 123 "FromNum:=proc(numlist)\n local i;\n global \+ Alhabet;\n\n cat(seq(substring(Alphabet,numlist[i]+1), i=1..nops(numl ist)));\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 226 "AffineDec ode:=proc(plaintext,a,b)\n local textnum,codenum,i,p;\n global Alpha bet;\n\n p:=length(Alphabet);\n textnum:=ToNum(plaintext);\n codenu m:=[seq(((textnum[i]-b)/a) mod p,i=1..length(plaintext))];\n FromNum( codenum);\nend:" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 49 "Guess that ' ' was encoded to 'm' and 'e' to 'k'." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "ToNum(\" mek\");" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7 &\"#E\"#7\"\"%\"#5" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 46 "msolv e(\{a*26+b=12,a*4+b=10\},length(Alphabet));" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#<$/%\"bG\"# " 0 "" {MPLTEXT 1 0 96 "AffineDecode(\"xgb dkjvmbkffcmtkrv m lkaerask mdbmwkf mezremzkmxrcm kkmfvkrx mxgvkmaskrvsc\",5,17);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#Qeomonsieur~neddy~wears~spectacles~in~bed~that~he~may~s ee~dreams~more~clearly6\"" }}}{EXCHG {PARA 257 "" 0 "" {TEXT -1 371 "2 . Sometime soon, you will be sent e-mail containing a message encoded \+ by an affine matrix cipher,\nbased on 2-vectors in the 61-character\n \+ alphabet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\\nabcdefghijklmnopqrstuvwxy z.,:;!?' \",\nalong with the first few letters of the message. Decrypt the message.\n message = \"?PV;gwENokHVV;b.I?IUWYBlFjokmfq:ZV\".\n First chars = \"Send roses\"" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "restart;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 48 "message := \"?PV;gwENokHVV;b.I?IUWYBlFjokmfq:ZV\";" }}{PARA 12 "" 1 " " {XPPMATH 20 "6#>%(messageGQC?PV;gwENokHVV;b.I?IUWYBlFjokmfq:ZV6\"" } }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 77 "Alphabet := \"ABCDEFGHIJKL MNOPQRSTUVWXYZ\\nabcdefghijklmnopqrstuvwxyz.,:;!?' \";" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%)AlphabetGQhnABCDEFGHIJKLMNOPQRSTUVWXYZ|+abcdefg hijklmnopqrstuvwxyz.,:;!?'~6\"" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 123 "FromNum:=proc(numlist)\n local i;\n global Alhabet;\n\n ca t(seq(substring(Alphabet,numlist[i]+1), i=1..nops(numlist)));\nend:" } }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 123 "ToNum:=proc (text)\n loc al i;\n global Alphabet;\n\n [seq(SearchText(substring(text,i),Alpha bet)-1,i=1..length(text))];\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 218 "TextToVects := proc (text,n)\n local i, j, textnums , vectors;\n\n textnums := ToNum (cat (text, seq(` `, i=1..modp (n - \+ length(text), n))));\n [seq ( [seq (textnums [(j-1)*n + i], i=1..n)], j=1..nops(textnums)/n)];\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 66 "VectsToText := vects -> FromNum (map(op,map(convert,vects,list ))):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 289 "AffineMatEncode := proc (text, A, B)\n local vtext, vcrypt, i, n, p;\n global Alphabet ;\n\n p := length (Alphabet);\n n := nops (convert(B,list));\n\n vt ext := TextToVects (text, n);\n vcrypt := [seq (map (modp, evalm (A & * vtext[i] + B), p), i=1..nops(vtext))];\n VectsToText (vcrypt);\nend :" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 32 "A := matrix(2,2, [[a,b ],[c,d]]);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"AG-%'matrixG6#7$7$% \"aG%\"bG7$%\"cG%\"dG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "B \+ := array(1..2, [e,f]);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"BG-%'vec torG6#7$%\"eG%\"fG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 32 "crypt := TextToVects(message,2);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%&cryp tG737$\"#e\"#:7$\"#@\"#c7$\"#L\"#\\7$\"\"%\"#87$\"#T\"#P7$\"\"(F*F)7$ \"#G\"#`7$\"\")F'7$F;\"#?7$\"#A\"#C7$\"\"\"\"#Q7$\"\"&\"#OF27$\"#R\"#K 7$\"#V\"#b7$\"#DF*" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 37 "plain := TextToVects(\"Send roses\",2);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6# >%&plainG7'7$\"#=\"#J7$\"#S\"#I7$\"#g\"#W7$\"#T\"#X7$F(F1" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 43 "eq1 := evalm (A &* crypt[1] +B - pl ain[1]);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%$eq1G-%'vectorG6#7$,*%\" aG\"#e%\"bG\"#:%\"eG\"\"\"!#=F/,*%\"cGF+%\"dGF-%\"fGF/!#JF/" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 43 "eq2 := evalm (A &* crypt[2] \+ +B - plain[2]);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%$eq2G-%'vectorG6# 7$,*%\"aG\"#@%\"bG\"#c%\"eG\"\"\"!#SF/,*%\"cGF+%\"dGF-%\"fGF/!#IF/" }} }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 43 "eq3 := evalm (A &* crypt[3] +B - plain[3]);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%$eq3G-%'vectorG6 #7$,*%\"aG\"#L%\"bG\"#\\%\"eG\"\"\"!#gF/,*%\"cGF+%\"dGF-%\"fGF/!#WF/" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 81 "msolve(\{eq1[1]=0,eq1[2]= 0,eq2[1]=0,eq2[2]=0,eq3[1]=0,eq3[2]=0\},length(Alphabet));" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#<(/%\"bG\"\"$/%\"aG\"#R/%\"dG\"#:/%\"cGF,/% \"eG\"#H/%\"fG\"#M" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 28 "subs( %,\{evalm(A),evalm(B)\});" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#<$-%'vect orG6#7$\"#H\"#M-%'matrixG6#7$7$\"#R\"\"$7$\"#:F2" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 57 "AffineMatEncode (message, [[39, 3], [15, 15]] , [29,34]); " }}{PARA 11 "" 1 "" {XPPMATH 20 "6#QCSend~roses~and~cavia r.~James~Bond.6\"" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}} {MARK "17 0 0" 0 }{VIEWOPTS 1 1 0 1 1 1803 }