{VERSION 6 0 "IBM INTEL NT" "6.0" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0 1 0 0 0 0 1 }{CSTYLE "2D Math" -1 2 "Times" 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 1 }{CSTYLE "2D Comment" 2 18 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 } {CSTYLE "2D Output" 2 20 "" 0 1 0 0 255 1 0 0 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 256 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 257 "" 1 24 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 258 "" 1 18 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 259 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 260 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 261 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 262 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 263 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 264 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 265 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 266 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 267 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 268 "" 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 }{CSTYLE "" -1 269 "" 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 }{CSTYLE "" -1 270 "" 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 } {CSTYLE "" -1 271 "" 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 }{CSTYLE "" -1 272 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 273 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 274 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 275 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 } {CSTYLE "" -1 276 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 277 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 278 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 279 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 280 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 } {CSTYLE "" -1 281 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 282 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 283 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 284 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 285 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 } {CSTYLE "" -1 286 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 287 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 288 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 289 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 290 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 } {CSTYLE "" -1 291 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 292 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 293 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 294 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 295 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 } {CSTYLE "" -1 296 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 297 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 298 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 299 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 300 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 } {CSTYLE "" -1 301 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 302 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 303 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 304 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 305 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 } {CSTYLE "" -1 306 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 307 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 308 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 309 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 310 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 } {CSTYLE "" -1 311 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 312 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 313 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 314 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 315 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 } {CSTYLE "" -1 316 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 317 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 318 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 319 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 320 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 } {CSTYLE "" -1 321 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 322 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 323 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "Tim es" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 1 0 1 0 2 2 0 1 } {PSTYLE "Heading 1" -1 3 1 {CSTYLE "" -1 -1 "Times" 1 18 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }1 1 0 0 8 4 1 0 1 0 2 2 0 1 }{PSTYLE "Warning" -1 7 1 {CSTYLE "" -1 -1 "Courier" 1 10 0 0 255 1 2 2 2 2 2 1 1 1 3 1 }1 1 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "Maple Output" -1 11 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }3 3 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "Maple Output" -1 12 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 3 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "Normal " -1 256 1 {CSTYLE "" -1 -1 "Times" 1 24 0 0 0 1 2 2 2 2 2 2 1 1 1 1 } 3 1 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "Normal" -1 257 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }3 1 0 0 0 0 1 0 1 0 2 2 0 1 }} {SECT 0 {EXCHG {PARA 256 "" 0 "" {TEXT -1 0 "" }{TEXT 257 0 "" }{TEXT 258 36 "Chapter 18: RSA Maple Implementation" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 135 "Maple can used to quickly perf orm the computations required by the RSA cryptosystem. Before beginnin g, we first unassign all variables." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "restart;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 " " }}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 32 "Alphabet to numerical conver sion" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }{TEXT 259 0 "" }}{PARA 0 "" 0 "" {TEXT -1 28 "The user-written procedures " }{TEXT 256 8 "ton umber" }{TEXT -1 5 " and " }{TEXT 260 8 "toletter" }{TEXT -1 247 " are read in the provide a convenient way of transferring between the alp habet letters and their numerical assignments that were given in Chapt er 18 of the Silvermann textbook. In addition, we use the number 37 to represent a space between words." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 520 "tonumber := proc(mess)\n local sl, cn, sn, ii, nt able;\n ntable := table([\"A\"=11, \"B\"=12, \"C\"=13, \"D\"=14, \" E\"=15, \n \"F\"=16, \"G\"=17, \"H\"=18, \"I\"=19, \"J\"= 20, \"K\"=21,\n \"L\"=22, \"M\"=23, \"N\"=24, \"O\"=25, \+ \"P\"=26, \n \"Q\"=27, \"R\"=28, \"S\"=29, \"T\"=30, \"U \"=31,\n \"V\"=32, \"W\"=33, \"X\"=34, \"Y\"=35, \"Z\"=36 , \" \"=37]):\n sl := length(mess);\n cn := 0;\n for ii from \+ 1 to sl do\n sn := ntable[substring(mess, ii..ii)]:\n cn := 100*cn + sn:\n od:\n RETURN(cn):\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 502 "toletter := proc(num) \nlocal cs, cn, sl, \+ ltable, ans, i; \nltable := table([11=\"A\", 12=\"B\", 13=\"C\", 14= \"D\", 15=\"E\", 16=\"F\", 17=\"G\",18=\"H\", 19=\"I\", 20=\"J\", 21= \"K\", 22=\"L\", 23=\"M\", 24=\"N\", 25=\"O\", 26=\"P\", 27=\"Q\", 28= \"R\", 29=\"S\", 30=\"T\", 31=\"U\", 32=\"V\", 33=\"W\", 34=\"X\", 35= \"Y\", 36=\"Z\", 37 = \" \"]); \ncn := num;\nsl := floor(trunc(evalf (log10(cn)))/2) + 1:\nans := \"\";\nfor i from 1 to sl do\n cn := cn /100;\n cs := ltable[frac(cn)*100];\n ans := cat(cs, ans);\n cn \+ := trunc(cn);\nod:\nRETURN(ans);\nend:" }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 38 "Encryption and Decryption of a Message" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 76 "The following commands create an RSA encryption s cheme by generating primes " }{TEXT 272 1 "p" }{TEXT -1 5 " and " } {TEXT 261 1 "q" }{TEXT -1 14 " and forming " }{TEXT 292 1 "m" }{TEXT -1 5 " and " }{XPPEDIT 18 0 "phi;" "6#%$phiG" }{TEXT -1 24 ". Note tha t the command " }{TEXT 293 10 "nextprime " }{TEXT -1 63 "outputs the s mallest prime that is larger than the given input." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 39 "p := nextprime(3132432323324413135154);" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"pG\"7f_88WKBBVKJ" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 39 "q := nextprime(7807078080873070170771);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"qG\"7\"yq,2t33yq!y" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 3 "The" }{TEXT 294 8 " isprime" }{TEXT -1 69 " command can be used to check whether a given number is indeed prime. " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "isprime(p); isprime(q); " }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%%trueG" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%%trueG" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 24 "These a re the values of " }{TEXT 295 1 "m" }{TEXT -1 5 " and " }{XPPEDIT 18 0 "phi;" "6#%$phiG" }{TEXT -1 22 " for these two primes." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 9 "m := p*q;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"mG\"Mzsm#yurQ3SQH1uJVCJP9bW#" }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 19 "phi := (p-1)*(q-1);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%$phiG\"MS7O*HxH)z\\W%=1uJVCJP9bW#" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 57 "Suppose we wanted to encrypt \"RADFORD UNIVERSITY\". Using " }{TEXT 273 8 "tonumber" } {TEXT -1 48 ", we convert this to a numerical representation." }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 36 "a := tonumber(\"RADFORD UNIV ERSITY\");" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"aG\"ENI>HG:K>CJP9GD; 96G" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 45 "The next command checks to see if the number " }{TEXT 274 1 "m " }{TEXT -1 57 " we chose is large enough to encrypt this entire messa ge." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 6 "m - a;" }}{PARA 11 " " 1 "" {XPPMATH 20 "6#\"MWUZ`>-bkw_c[7#p,8]M9bW#" }}}{EXCHG {PARA 0 " " 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 6 "Thus, " }{TEXT 296 5 "m > a" }{TEXT -1 41 " (as indicated by the last command since " } {TEXT 297 7 "m - a >" }{TEXT -1 64 " 0), and we can proceed. We next c hoose an enciphering exponent " }{TEXT 298 1 "k" }{TEXT -1 2 ". " }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "k := nextprime(3313445336); " }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"kG\"+T`W8L" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 4 "The " }{TEXT 299 4 "gcd " }{TEXT -1 21 "command ensures that " }{TEXT 300 1 "k" }{TEXT -1 34 " has a multiplicative inverse mod " }{XPPEDIT 18 0 "phi;" "6#%$ phiG" }{TEXT -1 2 " ." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 12 "gc d(k, phi);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"\"\"" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 132 "To encipher \" RADFORD UNIVERSITY\", we enter the following command. Note that the &^ operator performs fast exponentiation with Maple." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "b := a &^ k mod m;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"bG\"LQ]AbZ#e#RR0*)*o0qX_H<'Rl#" }}}{EXCHG {PARA 0 " " 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 58 "To decipher the me ssage, we need the deciphering exponent " }{TEXT 301 1 "u" }{TEXT -1 55 " which is found using the next two commands. Note that " }{TEXT 267 6 "igcdex" }{TEXT -1 33 " employs the Euclidean algorithm." }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 25 "igcdex(k, phi, 'u', 'v');" } }{PARA 11 "" 1 "" {XPPMATH 20 "6#\"\"\"" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 41 "The last command only outputs the gcd of " }{TEXT 302 1 " k" }{TEXT -1 5 " and " }{XPPEDIT 18 0 "phi" "6#%$phiG" }{TEXT -1 23 ". To see the values of " }{TEXT 303 1 "u" }{TEXT -1 5 " and " }{TEXT 304 1 "v" }{TEXT -1 6 ", type" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "u; v;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"Lh_P%f%[_Ua!oHU7=y(H%> 2[;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#!*v%)HB#" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 24 "Note that when we solve " }{TEXT 305 2 "ku" }{TEXT -1 3 " - " }{XPPEDIT 18 0 "phi" "6#%$phiG" }{TEXT -1 7 "v = 1, " } {TEXT 306 2 "u " }{TEXT -1 78 "needs to be positive. It already is her e so there is nothing to be done. When " }{TEXT 309 1 "u" }{TEXT -1 62 " is negative, we can produce a positive solution by computing " } {TEXT 307 1 "u" }{TEXT -1 3 " + " }{XPPEDIT 18 0 "phi" "6#%$phiG" } {TEXT -1 71 " (setting t = 1 in the general equation). However, adding multiples of " }{XPPEDIT 18 0 "phi" "6#%$phiG" }{TEXT -1 49 " is the \+ same as computing congruent solutions to " }{TEXT 308 1 "u" }{TEXT -1 5 " mod " }{XPPEDIT 18 0 "phi" "6#%$phiG" }{TEXT -1 48 ". Therefore, t o produce a positive solution for " }{TEXT 310 3 "u, " }{TEXT -1 62 "w e can assure that a positive congruence is obtained by typing" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "u := u mod phi;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"uG\"Lh_P%f%[_Ua!oHU7=y(H%>2[;" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 58 "The next \+ commands recover the message from the ciphertext." }}}{EXCHG {PARA 0 " > " 0 "" {MPLTEXT 1 0 18 "a := b &^ u mod m;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"aG\"ENI>HG:K>CJP9GD;96G" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 12 "toletter(a);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q3R ADFORD~UNIVERSITY6\"" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 39 "Suppose w e want to encipher the message" }}{PARA 257 "" 0 "" {TEXT -1 51 "\"RAD FORD UNIVERSITY IS LOCATED IN RADFORD VIRGINIA\"" }}{PARA 0 "" 0 "" {TEXT -1 18 "using the modulus " }{TEXT 279 1 "m" }{TEXT -1 14 " and e xponent " }{TEXT 280 1 "k" }{TEXT -1 62 " given above. We first store \+ this message as a string and use " }{TEXT 288 8 "tonumber" }{TEXT -1 37 " to convert this message to a number." }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 63 "message := \"RADFORD UNIVERSITY IS LOCATED IN RADFO RD VIRGINIA\";" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%(messageGQRRADFORD ~UNIVERSITY~IS~LOCATED~IN~RADFORD~VIRGINIA6\"" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 67 "a := tonumber(\"RADFORD UNIVERSITY IS LOCATED IN RADFORD VIRGINIA\");" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%\"aG\"]q6>C >KP9GD;96GPC>P9:I68DAPH>PNI>HG:K>CJP9GD;96G" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 57 "If we note the value we entered for m above and subt ract " }{TEXT 281 1 "a" }{TEXT -1 6 " from " }{TEXT 282 2 "m," }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 2 "m;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"Mzsm#yurQ3SQH1uJVCJP9bW#" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 6 "m - a;" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#!]qKYdOp5K [OIMiv'zP[7bd)o!*H68DAPH>PNI>HG:K>CJP9GD;96G" }}}{EXCHG {PARA 0 "" 0 " " {TEXT -1 12 "we see that " }{TEXT 283 1 "a" }{TEXT -1 16 " is larger than " }{TEXT 284 1 "m" }{TEXT -1 64 " and must be enciphered in bloc ks. To do this, we first use the " }{TEXT 286 7 "convert" }{TEXT -1 12 " to convert " }{TEXT 311 1 "m" }{TEXT -1 45 " from a number to a \+ string and then use the " }{TEXT 287 6 "length" }{TEXT -1 39 " command to see how many digits are in " }{TEXT 285 2 "m." }{TEXT -1 0 "" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 29 "length( convert(m, string) ) ;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"#W" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 6 "Since " }{TEXT 289 1 "m" }{TEXT -1 119 " has 44 digits and each letter has a two digit representation, we can ensure that our me ssage number will be less than " }{TEXT 290 1 "m" }{TEXT -1 119 " by e nciphering the message in 21 letter blocks - which will produce 42 num erical digits for each block. Note using the" }{TEXT 291 7 " length" } {TEXT -1 29 " command that our message has" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 8 "message;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#QRRADFOR D~UNIVERSITY~IS~LOCATED~IN~RADFORD~VIRGINIA6\"" }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 16 "length(message);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"#\\" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 29 "length( conv ert(a, string) );" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"#)*" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 151 "49 letters and hence requires 98 numeric al digits for its representation. We next enter the letter block lengt h that we want to break our message into." }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 9 "bl := 21;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#blG \"#@" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 69 "The next command breaks o ur message string into a sequence using the " }{TEXT 313 3 "seq" } {TEXT -1 40 " command into substrings (subblocks) of " }{TEXT 312 2 "b l" }{TEXT -1 26 " = 21 letters each (using " }{TEXT 314 9 "substring" }{TEXT -1 7 "). The " }{TEXT 315 4 "iquo" }{TEXT -1 169 " command is d esigned to get the number of blocks that will be needed to represent t he entire message (which is the total message length divided by the bl ock length + 1)." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 89 "messblo cks := [seq(substring(message,(i-1)*bl+1..i*bl),i=1..iquo(length(messa ge),bl)+1)];" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%+messblocksG7%Q6RADF ORD~UNIVERSITY~IS6\"Q6~LOCATED~IN~RADFORD~VF'Q(IRGINIAF'" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 26 "The next command uses the " }{TEXT 316 3 "seq" }{TEXT -1 90 " command to represent each block as a message numb er and store the results in a list. The " }{TEXT 317 4 "nops" }{TEXT -1 101 " command represents the total number of blocks of letters that we have in the list (in this case, 3)." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 61 "a := [seq(tonumber(messblocks[i]), i = 1..nops(messbl ocks))];" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%\"aG7%\"KH>PNI>HG:K>CJP9 GD;96G\"KKP9GD;96GPC>P9:I68DAP\"/6>C>" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 54 "To access the second message number, for example, type" } }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "a[2];" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"KKP9GD;96GPC>P9:I68DAP" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 25 "We next command uses the " }{TEXT 318 3 "seq" }{TEXT -1 38 " command to encrypt each block number." }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 45 "b := [seq( a[i] &^ k mod m, i = 1..nops(a))];" }} {PARA 12 "" 1 "" {XPPMATH 20 "6#>%\"bG7%\"L(G')Q5[\"*)y4\"GPTwy%\\e;R* 3Q\"Lw+'p)*G\\NDM[(o!=r]UY8lMC\"L(p(=:rxiGJJUqW5c]W[^$47" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 31 "Using the deciphering exponent " }{TEXT 319 1 "u" }{TEXT -1 67 ", the next command will recover the original m essage number blocks." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 45 "a \+ := [seq( b[i] &^ u mod m, i = 1..nops(b))];" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%\"aG7%\"KH>PNI>HG:K>CJP9GD;96G\"KKP9GD;96GPC>P9:I68DA P\"/6>C>" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 73 "Last, we recover \+ the actual English letters for each block number using " }{TEXT 323 8 "toletter" }{TEXT -1 62 " and concatenate the block strings to form th e entire message." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 41 "cat(se q(toletter(a[i]), i = 1..nops(a)));" }}{PARA 11 "" 1 "" {XPPMATH 20 "6 #QRRADFORD~UNIVERSITY~IS~LOCATED~IN~RADFORD~VIRGINIA6\"" }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 19 "Security of the RSA" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 60 "The security of the RSA is based on the inability to factor " }{TEXT 275 1 "m" }{TEXT -1 84 ". Suppose we know that a mess age has been encrypted using the following values of " }{TEXT 276 1 "m" }{TEXT -1 5 " and " }{TEXT 277 1 "k" }{TEXT -1 1 "." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 34 "m := 2704197470749256669125880759; " }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"mG\"=f2)e7pmD\\2Z(>/F" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "k := 23323441;" }}{PARA 11 " " 1 "" {XPPMATH 20 "6#>%\"kG\")TMKB" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 86 "Suppose we intercept a message \+ encoded in the following list containing four integers:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 155 "b := [1894890915331527069941608469 , 1999005780075336173726454745, 2523977245309045520915404285, 91373214 0394378082388979199, 1063798642635426213266842125];" }}{PARA 12 "" 1 " " {XPPMATH 20 "6#>%\"bG7'\"=p%3;%*pq_J`\"4*[*=\"=XZXEP\"=&G /a\"4_X!4`CxR_#\"<*>z*)Q#3yVRS@t8*\"=D@%oE8iUNEk)zj5" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 21 "To decipher, we need " }{TEXT 278 1 "u" }{TEXT -1 48 ". To do this, we first get the prime factors of " }{TEXT 262 2 "m " }{TEXT -1 11 "and assign " }{TEXT 263 1 "p" }{TEXT -1 5 " and " } {TEXT 264 2 "q." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "ifactor( m);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#*&-%!G6#\"/2&[()GMU$\"\"\"-F%6# \"/P!)f04**yF(" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 41 "p := 3423 4288748507; q := 78990905598037;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>% \"pG\"/2&[()GMU$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"qG\"/P!)f04**y " }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 8 "Knowing " }{TEXT 265 1 "p" }{TEXT -1 5 " and " }{TEXT 266 1 "q" } {TEXT -1 14 ", we can form " }{XPPEDIT 18 0 "phi;" "6#%$phiG" }{TEXT -1 13 " and recover " }{TEXT 320 1 "u" }{TEXT -1 1 "." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "phi := (p - 1)*(q - 1);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%$phiG\"=;U`JRWV\"\\2Z(>/F" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 25 "igcdex(k, phi, 'u', 'v');" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"\"\"" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 2 "u;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#! " 0 "" {MPLTEXT 1 0 15 "u := u mod phi;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>% \"uG\"=\"oE`nGOXqIdOZ9#" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT -1 55 "The next commands recover the text that w as deciphered." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 45 "a := [seq ( b[i] &^ u mod m, i = 1..nops(b))];" }}{PARA 12 "" 1 "" {XPPMATH 20 " 6#>%\"aG7'\";LPCDB<>HPA>:C\";6IHP8CPDIPIC:\";7PH>P=8>=LP:I\";CJPC6=IPG :II:\"#8" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 41 "cat(seq(tolette r(a[i]), i = 1..nops(a)));" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#QVNEIL~S IGMON~WENT~TO~NC~STATE~WHICH~IS~BETTER~THAN~UNC6\"" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 61 "A more secure RSA scheme is illustrated by the next commands." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 43 "p := nextprime(34234288748471432423353535);" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"pG\";(f`LUK9Z[()GMU$" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 43 "q := nextprime(78990905597987533553 335644);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"qG\";zcL`N`()zf04**y" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 12 "m := p * q; " }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"mG\"Ujt3`!z^yGV@qvc'==aq`Zuqu>/F" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 109 "Before executing this command, ma ke sure you locate the STOP key on the toolbar to interrupt the comput ation." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "ifactor(m);" }} {PARA 7 "" 1 "" {TEXT -1 33 "Warning, computation interrupted\n" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 96 "Th e next two commands generate two 100 digit primes and form the value o f n they would produce.." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 117 "p := nextprime(12345678912345678912345678912345678912345678912345 67891234567891234567891234567891234567891234567891);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%\"pG\"_qB$oXB\"*ycM7*ycM7*ycM7*ycM7*ycM7*ycM7*ycM7 *ycM7*ycM7*ycM7" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 117 "q := ne xtprime(35745678912345676912345608912345008912345678222345673312345678 91234567891234567891234567891234561842);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%\"qG\"_q\\>cM7*ycM7*ycM7*ycM7*ycM7LnXBAycM7*3]M7*3cM7pnXB\"*yc uN" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "isprime(p); isprime(q );" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%%trueG" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%%trueG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 9 "m \+ := p*q;" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%\"mG\"bwF:a;]:>\"='*oPfO8NxUK2?)o4YzAu " 0 "" {MPLTEXT 1 0 29 "le ngth( convert(m, string) );" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"$*>" }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 33 "Public Key and Digital Signat ures" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 97 "Suppose we set up two RSA schemes. The first scheme will be for the intended sender of a message." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 63 "p[s] := nextprime(634777368 6870708760799696797808777766668897):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 63 "q[s] := nextprime(41327877787767976907707462388777777 77824607):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "m[s] := p[s]* q[s];" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>&%\"mG6#%\"sG\"ap$H/\"\\ekKJ .uVqcmp(4`(yE@=\\A6WuW0-&)pKu,?Sb^,SBE" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 29 "k[s] := nextprime(970707244);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>&%\"kG6#%\"sG\"*xsqq*" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 32 "phi[s] := (p[s] - 1)*(q[s] - 1):" }}}{EXCHG {PARA 0 " > " 0 "" {MPLTEXT 1 0 18 "gcd(k[s], phi[s]);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"\"\"" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 34 "ig cdex(k[s], phi[s], 'us' , 'vs');" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\" \"\"" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "u[s] := us mod phi[ s]:" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 42 "This scheme is for the intended recipient." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 64 "p[r] := next prime(17896969699623456789070978760780912334556787):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 64 "q[r] := nextprime(97986967967687654321070 877607123456788097255):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 " m[r] := p[r]*q[r];" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>&%\"mG6#%\"rG\" cp>(*>0(f/ye " 0 "" {MPLTEXT 1 0 31 "k[r] := nextprime(87070870807);" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#>&%\"kG6#%\"rG\",H3(32()" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 32 "phi[r] := (p[r] - 1)*(q[r] - 1):" } }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 34 "igcdex(k[r], phi[r], 'ur' \+ , 'vr');" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"\"\"" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "u[r] := ur mod phi[r]:" }}}{EXCHG {PARA 0 " " 0 "" {TEXT -1 92 "For the scheme to work correctly, the receivers mo dulus must be larger the senders, that is " }{XPPEDIT 18 0 "m[r];" "6# &%\"mG6#%\"rG" }{TEXT -1 3 " > " }{XPPEDIT 18 0 "m[s];" "6#&%\"mG6#%\" sG" }{TEXT -1 48 ". The next command tests to see if this is true." }} }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 12 "m[r] - m[s];" }}{PARA 12 " " 1 "" {XPPMATH 20 "6#\"cpEa4cQ\"ykDx> " 0 "" {MPLTEXT 1 0 57 "a := tonumber( \" TRANSFER ONE MILLION DOLLARS FROM NEIL\");" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%\"aG\"goA>:CPBDG;PHG6AAD9PCD>AA>BP:CDPG:;HC6GI" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 74 "This makes sure the message number is not larger than the smallest moduli " }{XPPEDIT 18 0 "m[s];" "6#&% \"mG6#%\"sG" }{TEXT -1 1 "." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "m[s] -a;" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#\"aprB&\\77uIqoV@aWuCn \"Qa,-'pK!)o!f?![mXl^u(37D^,SBE" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 4 "The \+ " }{TEXT 269 6 "sender" }{TEXT -1 49 " first \"signs\" the message by \+ using his or her's " }{TEXT 268 10 "decryption" }{TEXT -1 10 " exponen t." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "J := a &^ u[s] mod m[ s];" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%\"JG\"`pydo9%oxVk00'[()\\Toh) >%QYhma?7'fECf%[-,3j(RZP&=Z#" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 10 "Using the " }{TEXT 270 10 "receiver's" }{TEXT -1 32 " public encryption exponent and " }{TEXT 321 1 "m" } {TEXT -1 39 " value, the sender encrypts the message" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "b := J &^ k[r] mod m[r];" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%\"bG\"bpU2\"o?]J(y)*4>?k$>**og0bCfZq7'=p(\\w#*\\ OWN5bp+,)pl2#" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 116 "To recover the message, the receiver first decipher's the encrypted text using his his or her's decryption exponent." }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "J := b &^ u[r] mod m[r];" }} {PARA 12 "" 1 "" {XPPMATH 20 "6#>%\"JG\"`pydo9%oxVk00'[()\\Toh)>%QYhma ?7'fECf%[-,3j(RZP&=Z#" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT -1 100 "This is what happens if the receiver tri es to recover the message without finding out who signed it." }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 12 "toletter(J);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#(&%'ltableG6#\"\"#(&F%6#\"#Z(Q\"H6\"(&F%6#\"#`(&F% 6#\"#u(&F%6#\"#t(&F%6#\"#(*(&F%6#\"#j(&F%6#\"\")(&F%6#\"\"\"(F$(&F%6# \"#[(&F%6#\"#X(&F%6#\"##*(&F%6#\"#U(&F%6#\"#l(&F%6#\"#'*(Q\"BF.(Q\"JF. (&F%6#\"#a(&F%6#\"#m(&F%6#\"#h(&F%6#\"#Y(&F%6#\"#Q(&F%6#\"#T(&F%6#\"#) *(F[p(&F%6#\"#o(Fgp(&F%6#\"#\\(&F%6#\"#()(FM(&F%6#\"#g(&F%6#\"#](&F%6# \"#c(&F%6#\"#W(Q\"~F.(&F%6#\"#w(&F%6#\"#%)(Q\"DF.(F`q(&F%6#\"#d(&F%6# \"#yQ!F." }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 34 "The recepient must now unlock the " }{TEXT 271 18 "sender 's signature" }{TEXT -1 54 " by using the sender's public encryption e xponent and " }{TEXT 322 1 "m" }{TEXT -1 7 " value." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "a := J &^ k[s] mod m[s];" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%\"aG\"goA>:CPBDG;PHG6AAD9PCD>AA>BP:CDPG:;HC6GI" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 12 "toletter(a);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#QGTRANSFER~ONE~MILLION~DOLLARS~FROM~NEIL6\"" }} }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}{PARA 11 "" 1 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}}{MARK "0 0 \+ 0" 0 }{VIEWOPTS 1 1 0 3 2 1804 1 1 1 1 }{PAGENUMBERS 0 1 2 33 1 1 }