{VERSION 4 0 "SUN SPARC SOLARIS" "4.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 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 14 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 258 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 259 "" 1 14 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 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 262 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 263 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 264 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 265 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 266 "" 0 1 0 0 0 0 0 1 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 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 269 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 270 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 271 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 272 "" 0 1 0 0 0 0 0 2 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 273 "" 0 1 0 0 0 0 0 2 0 0 0 0 0 0 0 1 }{PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }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 1 }3 3 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 256 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 257 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 258 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 259 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 260 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 261 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE " " 0 262 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 263 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 264 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }} {SECT 0 {PARA 256 "" 0 "" {TEXT -1 0 "" }{TEXT 256 0 "" }{TEXT 257 17 "ACCESS 2001 - RSA" }}{PARA 257 "" 0 "" {TEXT -1 0 "" }{TEXT 258 0 "" }{TEXT 259 15 "Thursday June14" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT 260 15 "Our Plan Today:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 539 "While the RSA public-key encryption method is still clear in your mind, (NOT?), we will do the example worked out in the Tom Davis \"Cryptography\" notes, page 13-1 4. This should help make things more concrete. This example uses sma ll numbers and a one-letter message, and Maple will do all of our comp utations. I believe this will make the algorithm more clear to you. \+ The explanation of the Algorithm on page 6-7 of the Rivest-Shamir-Adle man is also a very concise outline which will make more and more sense as you play with examples." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 187 "After we digest Davis' example we will try so mewhat larger prime numbers, to help prepare you for the part of your \+ group project in which you send yourselves (and me) encoded messages . " }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 722 "We \+ will absolutely stop by 10:00 today so that we have plenty of time to \+ make our way over to JTB 120 for the lecture by Professor Seger at 10: 30. If I get carried away start to look like I'm going past 10:00 , p lease stop me. We have all morning tomorrow in the lab so we need no t finish this handout today. If the last couple of days have made yo u dizzy, I want to remind you that the number theory Jim was talking a bout, and the relation to RSA cryptography is usually taught in our 4 000-level (typically junior/senior) number theory course! ...... I a m not expecting you to understand every detail, but your experience sh ould convince you that even something as boring as the integers has ma gic buried in it. " }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 " " {TEXT -1 210 "I will make you do a lot of your own typing in Part I, so that you can have a fair experience fixing errors. Therefore, in \+ the file you download, the Maple commands which you see in the hardcop y might be gone." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 16 "In this example " }{TEXT 262 40 "Bob is going to send a m essage to Alice," }{TEXT -1 55 " so their roles from yesterday's pictu res are reversed." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 258 "" 0 " " {TEXT -1 7 "Part I " }}{PARA 259 "" 0 "" {TEXT -1 18 "The Davis Exam ple:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 63 "1 ) Remember that Bob must encipher his message to Alice using " } {TEXT 261 7 "Alice's" }{TEXT -1 226 " public key, since only Alice has the tools to decipher such a message. So at some earlier time Alice \+ created her tools as follows: Alice picked two prime numbers, from pa ge 13: (p=23 and q=41). Define p and q using Maple." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 11 "" 1 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 129 "2) Define their product to be the modulus \"N\" for Ali ce's circle algebra, (mod N arithmetic). (N should turn out to equal \+ 943.)" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 178 "3a) Compute the number N2:=(p-1)*(q-1), which turns out to be 880. \+ Then pick a number e which is relatively prime to N2. Check that Dav is' and therefore our choice e:=7 works" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 145 "3b) Why do we care about N2 and e? The RSA encryption scheme takes a m essage (number) \"x\" and raise it to the power \"e\" (mod N). In Map leese," }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 115 "encrypt:=x->x^e m od N;\n #if you defined e and N above, \n #then their values will be used for the encrypt function" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%(e ncryptGR6#%\"xG6\"6$%)operatorG%&arrowGF(-%$modG6$)9$%\"eG%\"NGF(F(F( " }}}{PARA 0 "" 0 "" {TEXT 265 5 "Note:" }{TEXT -1 97 " In the pictur e from yesterday's notes the letters \"e\" and \"d\" were standing for the encryption " }{TEXT 263 9 "functions" }{TEXT -1 53 ". Today and \+ in Jim's lecture yesterday, they denote " }{TEXT 264 6 "powers" } {TEXT -1 246 " which appear as part of the encryption and dcryption fu nctions. And the requirement that e and N2 be relatively prime guaran tees that we there is a decrypting power \"d\" for the decryption func tion. We return to this point later in the example." }}{PARA 0 "" 0 " " {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 172 "4) The message which \+ Bob wishes to send is the number M=35. (Davis uses the letter M to st and for message. We used \"x\" yesterday in our picture and in our d iscussion). " }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 93 "According to the table on page 9 this message is the letter \"Y \". Anyway, define M to be 35." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 110 "5) Encry pt the message, and call the value \"C\" for ciphertext. Yesterday we called the encrypted message \"y\"." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 59 "C:=encrypt(M); #either of these should work\nC:=M^e \+ mod N;\n" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"CG\"$X&" }}{PARA 11 " " 1 "" {XPPMATH 20 "6#>%\"CG\"$X&" }}}{PARA 0 "" 0 "" {TEXT -1 392 "6) Great, Maple just did this step! Remember from our tables yesterday that multiplying and computing powers in modular arithmetic is easy b ecause you can always reduce your intermediate terms to be less than t he modulus. That's why Maple would have no problem, even for huge num bers. Anyway, Alice gets the message \"C\" which Bob has encrypted us ing Alice's public encryption information." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 344 "7) Now Alice will decrypt. S o she needs to use the decryption power \"d\". How did she find \"d\" when she was setting up her system? With number theory of course, in particular with Euler's Theorem. She wants the decryption and encryp tion functions to be inverse functions. Since each is going to be a \+ power function, she wants the formulas" }}{EXCHG {PARA 11 "" 1 "" {XPPMATH 20 "6#/))%\"MG%\"eG%\"dGF&" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 4 "i.e." }}}{EXCHG {PARA 11 "" 1 "" {XPPMATH 20 "6#/)%\"MG*&%\"eG\" \"\"%\"dGF(F%" }}}{PARA 0 "" 0 "" {TEXT -1 41 "to hold in our mod N mo dular arithmetic. " }{TEXT 266 61 "What does d have to satisfy to make this last identity true? " }{TEXT -1 99 " Because M is relatively pr ime to N=pq we know that M^(N2)=1 mod N, by Euler's Theorem. Therefore " }{TEXT 267 33 " if e*d = 1 plus a multiple of N2" }{TEXT -1 152 ", \+ then M raised to the multiple of N2 power will be 1, and M^(e*d) will \+ indeed equal M, provided we take both values in the natural set \{1,2, ...M-1\}. " }{TEXT 268 47 " (The last sentence may need some contemp lation" }{TEXT -1 1 " " }{TEXT 270 17 "in a quiet place." }{TEXT -1 451 ") (And, actually we didn't need to require M relatively prime to N, see the explanation on page 7 of the Rivest-Shamir-Adleman paper.) Also, Jim showed us how to find d using the generalized Euclidean al gorithm, and the condition that we can do so is that e and N2 be relat ively prime, exactly the condition we imposed back in step 3. Luckily for us, we don't have to program the little loop which does this comp utation, Maple already has done so. " }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 114 "isolve(e*d+y*N2=1); #sta nds for \"integer solve\", recall\n #we don't really care what valu e y is, we just want d" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#<$/%\"yG,&\" \"$\"\"\"%$_N1G\"\"(/%\"dG,&!$x$F(F)!$!))" }}}{PARA 0 "" 0 "" {TEXT -1 92 "N1 is a free parameter in the formual for d. If we take N1=-1, we obtain Davis' value for d" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 3 "d:=" }}{PARA 11 "" 1 "" {TEXT -1 0 "" }}}{PARA 0 "" 0 "" {TEXT -1 139 "8) The decoding function is given by raising C to the power d (mod N). Davis shows how quickly this can be done using modular arit hmetic." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "decrypt:=y->y^d m od N;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%(decryptGR6#%\"yG6\"6$%)ope ratorG%&arrowGF(-%$modG6$)9$%\"dG%\"NGF(F(F(" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 50 "decrypt(C); #both of these should work\nC^d mod N;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"#N" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"#N" }}}{PARA 0 "" 0 "" {TEXT 269 12 "WE DID IT! " }} {PARA 0 "" 0 "" {TEXT -1 175 "Our message pieces can be no larger than the modulus N, so in the example above we can't transmit more than a \+ single letter. (Or, more precisely, a single letter per packet.)" }} {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 260 "" 0 "" {TEXT -1 9 "Part II: " }}{PARA 261 "" 0 "" {TEXT -1 22 "A more practical size." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 483 " We need to \+ use somewhat larger numbers if you guys are going to transmit actual m essages. We won't make them anywhere near the actual sizes that are r equired for real security, however. Since each letter uses 2 spaces. \+ If we break our messages into packets of 6 letters then that will 12 \+ digits per packet. So we want N to have at least 13 digits, so that the packet is smaller than N. It seems hopeless doesn't it? But it \+ turns out most of the commands already in Maple" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 238 "restart: #this will clear all old definitions. \n #It's a good idea to restart when you begin\n # new work - of course you might need to \n #go back and re-en ter some old commands that\n #you need again" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 90 "rand(); #random number generator ,\n #default range is between 0 and 12 digits " }}{PARA 11 " " 1 "" {XPPMATH 20 "6#\"-\"3p'>uU" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 42 "bigger:=rand(1..10^30): #bigger\nbigger();" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"?kN9cUZ(ptIjV.F$p" }}}{PARA 0 "" 0 "" {TEXT -1 73 "The default size will be bigger than we need. Now let's \+ get some primes:" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 28 "good:=ra nd(1..10^7):\ngood();" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"'9P$)" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 146 "for i from 1 to 100 do\n x :=good():\n if isprime(x)=true #check if number is prime\n then \+ print(x); #if it is, let's see it\n fi;\nod: \n " }}{PARA 11 " " 1 "" {XPPMATH 20 "6#\"((R)G(" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"(B 8J(" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"(68T$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"'P3_" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"(VLj'" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#\"(.*4r" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"(,`]#" }}}{PARA 0 "" 0 "" {TEXT -1 207 "It is unlikely your nu mbers agree with mine. (Well, in truth everytime I restart I get the \+ same so-called random numbers.) But let's all use two of mine. We do the RSA procedure in a more compressed form:" }}{PARA 0 "" 0 "" {TEXT -1 10 "Steps 1,2)" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 100 " p:=7288397; #I got these with my mouse, by cut and paste\nq:=3411311; \nN:=p*q; #our modulus" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>% \"pG\"((R)G(" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"qG\"(68T$" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"NG\"/n%e)))H'[#" }}}{PARA 0 "" 0 " " {TEXT -1 226 "To see that a system of this size is not secure, try t he following command. This is the command that would fail if we had c hosen primes of length 200 instead of 12, and that's the reason RSA is secure when you use huge primes" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 34 "ifactor(N); #prime factorization" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#*&-%!G6#\"(68T$\"\"\"-F%6#\"((R)G(F(" }}}{PARA 0 "" 0 " " {TEXT -1 28 "3) Find an encoding power e" }}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 16 "N2:=(p-1)*(q-1);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6 #>%#N2G\"/g(e\"yH'[#" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 83 "for i from 1 to 10 do\n x:=good();\n \+ if gcd(x,N2)=1\n then print(x);\n fi\nod:" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"(xl$>" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"(^8%o" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 46 "e:=2626811;\ngcd(e,N2); #c heck relative prime" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"eG\"(6oi#" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"\"\"" }}}{PARA 0 "" 0 "" {TEXT -1 53 "7) Get decoding power (done out of order with notes)." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 48 "isolve(e*d + y*N2 =1);\n #find de cryption power" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#<$/%\"dG,&!/poNW;9C \"\"\"%$_N1G!/g(e\"yH'[#/%\"yG,&\"(,1b#F(F)\"(6oi#" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 74 "d:=-24141644356869 mod N2;\n #use the mou se to copy and paste big numbers" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>% \"dG\"-\"*=!QL@(" }}}{PARA 0 "" 0 "" {TEXT 271 16 "Technical Point:" } {TEXT -1 551 " When we get to step 6, or certainly step 8 Maple will \+ complain when we try to compute large powers of large numbers, so we h ave to lead it through this modular computation in smaller steps. The \+ procedure below does an analgous computation to Davis', except using p owers of 10 rather than powers of 2. It's fine with me if you just us e this procedure. The encryption algorithm makes use of the digit pro cedure which picks of the coefficients of powers of 10 in the decimal \+ expansion of a number. So make sure to load digit before you load enc rypt." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 49 "digit:=(x,n)->trunc (x/10^n)-10*trunc(x/10^(n+1));" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%&d igitGR6$%\"xG%\"nG6\"6$%)operatorG%&arrowGF),&-%&truncG6#*&9$\"\"\")\" #59%!\"\"F3-F/6#*&F2F3)F5,&F6F3F3F3F7!#5F)F)F)" }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 126 "digit(123.56,-1);\ndigit(123.56,2);\ndigit(12 3.56,0);\n #check how digit picks off the digits corresponding\n # to powers of 10" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"\"&" }}{PARA 11 " " 1 "" {XPPMATH 20 "6#\"\"\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"\"$ " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 451 "encrypt:= proc(M1,E,N3) #message, encipher p ower,modulus\n #we assume all M1's, E's have at most 14 digits\n local i,j, #indices\n L1, #list of succesive \+ 10th powers of M1\n ans; #answer\n L1[1]:=M1 mod N3;\n fo r i from 2 to 14 do\n L1[i]:=L1[i-1]^10 mod N3;\n od:\n ans:=1: \+ #initialize answer\n for j from 1 to 14 do\n ans:=ans*(L1[j]^d igit(E,j-1)) mod N3;\n od:\n\nRETURN(ans);\nend:\n \n \+ " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{PARA 0 "" 0 "" {TEXT -1 14 "Let's check!!!" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 9 "M:=1 2345;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"MG\"&XB\"" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "encrypt(M,e,N);" }}{PARA 11 "" 1 " " {XPPMATH 20 "6#\"/^'RyjUZ#" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 84 "encrypt(24742637839651,d,N);\n #decryption is just encryption w ith a different power" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"&XB\"" }}} {PARA 0 "" 0 "" {TEXT -1 6 "YES!!!" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 262 "" 0 "" {TEXT -1 26 "Part II I\nAn Actual Message" }}{PARA 264 "" 0 "" {TEXT -1 0 "" }}{PARA 263 " " 0 "" {TEXT -1 0 "" }{TEXT 272 44 "We Use Davis' Table on page 9 to e ncrypt \" " }{TEXT -1 9 "I'm Dizzy" }{TEXT 273 27 "\". We will need \+ two chunks" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 29 "M1:=19674900; \nM2:=1445626261;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#M1G\")+\\n>" } }{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#M2G\"+hiiX9" }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 41 "C1:=encrypt(M1,e,N);\nC2:=encrypt(M2,e,N);" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#>%#C1G\"/;6!)[yM@" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#C2G\"/(foFUOk\"" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 33 "encrypt(C1,d,N);\nencrypt(C2,d,N);" }}{PARA 11 "" 1 " " {XPPMATH 20 "6#\")+\\n>" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"+hiiX9 " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{MARK "75 0 0" 0 } {VIEWOPTS 1 1 0 1 1 1803 1 1 1 1 }{PAGENUMBERS 0 1 2 33 1 1 }