{VERSION 2 3 "SUN SPARC SOLARIS" "2.3" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0 1 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 "Heading 1" 0 3 1 {CSTYLE "" -1 -1 "" 1 18 0 0 0 0 0 1 0 0 0 0 0 0 0 }1 0 0 0 8 4 0 0 0 0 0 0 -1 0 }} {SECT 0 {SECT 1 {PARA 3 "" 0 "" {TEXT -1 35 "Basic Stuff for Digitizin g Messages" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 368 "numbers:=proc (s)\n local alph,v,n,m,i,c;\n alph:=`abcdefghijklmnopqrs tuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`;\n n:=length(s);\n v: =[];\n for i from 1 to n do\n c:=substring(s,i..i) ;\n m:=searchtext(c,alph);\n if m > 0 then\n v:=[op(v), (m -1 mod 26) + 1] fi;\n od;\n \+ RETURN(v)\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 196 "lette rs:=proc(v)\n local alph,i,msg;\n alph:=`ABCDEFGHIJKLMNOPQRSTUVWXY Z`;\n msg:=``;\n for i from 1 to nops(v) do\n msg:=cat(msg,s ubstring(alph,v[i]..v[i]) );\n od;\n RETURN(msg);\nend:" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 323 "digitize:=proc(m, k)\n l ocal v,n,c,i,j,ans;\n v:=numbers(m);\n n:=nops(v);\n ans:=[]; \n for i from 0 to nops(v) by k do\n c:=0;\n for j from 1 to k do\n if i+j > n then break fi;\n c:=100*c+v[ i+j];\n od;\n if j " 0 "" {MPLTEXT 1 0 392 "undigitize:=proc(c,k)\n local ans,i,j,n,m,u,v;\n ans:=` `;\n for i to nops(c) do\n n:=c[i];\n v:=``;\n \+ for j from 1 to k do\n m:=n mod 100;\n if m=0 the n\n v:=cat(v,` `);\n else\n u:= letters([m]);\n v:=cat(u,v);\n fi;\n \+ n:=(n-m)/100;\n od;\n ans:=cat(ans,v);\n od;\nend: " }}}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 18 "Choose some primes" }{TEXT -1 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "p:=nextprime(rand());" }} }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "q:=nextprime(rand());" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 7 "n:=p*q;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "evalf(log(n)/log(10));" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 15 "Random exponent" }{TEXT -1 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "e:=rand();" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 22 "Nu mber Theory Commands" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "with(numthe ory):" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 54 "This takes a while becau se Maple has to factor n first" }{TEXT -1 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 7 "phi(n);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 24 "This i s done in a flash." }{TEXT -1 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 12 "(p-1)*(q-1);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 53 "Invert e mod \+ phi(n) to get the deciphering exponent d" }{TEXT -1 0 "" }}{PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 31 "d := e&^(-1) mod ((p-1)*(q-1));" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 58 "It didn't work because e is not relativel y prime to phi(n)" }}{PARA 0 "" 0 "" {TEXT -1 58 "So we have to choose another e; this time make it a prime." }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "e:=nextprime(rand());" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 31 "d := e&^(-1) mod ((p-1)*(q-1));" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 26 "msg:=`This is a message.`;" }}}{EXCHG {PARA 0 "" 0 " " {TEXT -1 51 "These are the numbers of the letters in the message" } {TEXT -1 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "numbers(msg);" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 49 "This is a big number made out of a ll of the above" }{TEXT -1 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "m :=digitize(msg,12);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 11 "Cipher tex t" }{TEXT -1 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "c:= map(x-> x&^ e mod n, m);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 11 "Deciphering" } {TEXT -1 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 28 "m2:=map(x -> x&^d m od n, c);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 24 "Check to see if it w orks" }{TEXT -1 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "undigitize(m 2,12);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{MARK "1 1 0 " 21 }{VIEWOPTS 1 1 0 1 1 1803 }