{VERSION 5 0 "IBM INTEL NT" "5.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 } {PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "Times" 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 2" -1 4 1 {CSTYLE "" -1 -1 "Times" 1 14 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }1 1 0 0 8 2 1 0 1 0 2 2 0 1 }{PSTYLE "Maple Output" 0 11 1 {CSTYLE "" -1 -1 "" 0 1 0 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 0 }1 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Title" -1 18 1 {CSTYLE " " -1 -1 "Times" 1 18 0 0 0 1 2 1 1 2 2 2 1 1 1 1 }3 1 0 0 12 12 1 0 1 0 2 2 19 1 }{PSTYLE "Author" -1 19 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 6 2 1 0 1 0 2 2 0 1 }} {SECT 0 {EXCHG {PARA 18 "" 0 "" {TEXT -1 18 "AES S-Box Creation" }} {PARA 19 "" 0 "" {TEXT -1 35 "\251Mike May, S.J. 2002, maymk@slu.edu" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "" 0 " " {TEXT -1 323 "As with other symmetric block ciphers, AES has a rathe r complicated description. In trying to understand the structure of t he algorithm, it is worth looking at the structure in several pieces. \+ In this worksheet we look at the construction of the S-Box, or substi tution box which is used for a byte substitution operation." }}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 20 "Conversion Functions" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 444 "For the creation of the S-Box in AES we need to \+ be able to think of an 8 bit byte in 4 different ways, as an integer f rom 0 through 255, as a string of 8 bits in binary, as a list of 8 bit s with numeric values, and as a polynomial of degree at most 7 in alph a. We also need conversion routines to shift between the views. We s tart with the conversions to move cyclically between those four repres entations, and add others that will be useful." }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 648 "intToBits := intValue -> \n substring(conv ert(convert(intValue+256, binary), string), 2..9):\nbitToList := bitW ord -> \n [seq(parse(substring(bitWord,i)), i=1..8)]:\nlistToPoly := bitList ->\n sort(sum(bitList[j]*alpha^(8-j), j=1..8)):\npolyToInt \+ := poly -> subs(alpha=2, poly):\n\nlistToBits := bitList -> cat(seq(co nvert(bitList[i],string),i=1..8)):\nbitToInt := bitWord -> convert(par se(bitWord),decimal,binary):\nlistToInt := bitList ->\n sort(sum(bit List[j]*2^(8-j), j=1..8)):\npolyToList := poly -> [seq(coeff(poly,alph a, 8-i),i=1..8)]:\n\npolyToBits := poly -> intToBits(polyToInt( poly)) :\nbitToPoly := bitWord -> listToPoly(bitToList(bitWord)):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 137 "intValue := 17;\nbitWord := intToB its(intValue);\nbitList := bitToList(bitWord);\npoly := listToPoly(bit List);\nintValue2 := polyToInt(poly);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%)intValueG\"#<" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%(bitWordGQ)00 0100016\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%(bitListG7*\"\"!F&F&\" \"\"F&F&F&F'" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%%polyG,&*$)%&alphaG \"\"%\"\"\"F*F*F*" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%*intValue2G\"#< " }}}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 13 "Sbox Creation" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 242 "The polynomial interpretation of a byte \+ is bases on bytes as elements of a finite field GF(256). The construc tion of this field requires we fix an irreducible polynomial of degree 8 over Z_2. We include that polynomial for our computations." }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 51 "genPoly := alpha^8 + alpha^4 + alpha^3 + alpha + 1:" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 71 "For an individual entry of the S-Box, we create the value in 2 steps. " }} {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 403 "In the f irst step we represent the number as a list of bits. If the list does not represent 0 we invert in the field GF(256). Recall that we inver t in a finite field by using the extended Eulcidean algorithm to repre sent 1 as a linear combination of the polynomial to be inverted and th e generating polynomial. The coefficient of the polynomial to be inve rted will be the inverse in the finite field." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 190 "In the second step we mu ltiply be a given matrix and shift by a specified vector. Given the s pecial structure of the matrix the matrix multiplication can be done w ith a shifted dot product." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 96 "To get an entry of the S-Box we do these steps in order and convert the list to an 8 bit string." }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 666 "s1Make := proc(intValue)\n local bitList, i nvPoly, extraPoly, polyValue:\n bitList := bitToList(intToBits(intVa lue)):\n if (intValue <> 0) then #invert nonzero entries.\n pol yValue := listToPoly(bitList):\n Gcdex(polyValue, genPoly, alpha, 'invPoly', 'extraPoly') mod 2;\n bitList := (polyToList(invPoly) ):\n end if:\n bitList;\nend:\ns2Make := proc(bitList)\n local s hift1List, shift2List:\n shift1List := [1,1,1,1,1,0,0,0,1,1,1,1,1,0, 0,0]:\n shift2List := [0,1,1,0,0,0,1,1]:\n [seq(linalg[dotprod](bi tList,[seq(shift1List[9+i-j],i=1..8)])\n +shift2List[j] mod 2 , j=1..8)];\nend:\nsMakeIBits := intVal -> listToBits(s2Make(s1Make(in tVal))):" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 39 "Check by computing th e first 8 values. " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 42 "for i from 0 to 7 do\nsMakeIBits(i) end do;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q)011000116\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q)011111006\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q)011101116\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q)011110116\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q)1111 00106\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q)011010116\"" }}{PARA 11 " " 1 "" {XPPMATH 20 "6#Q)011011116\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6 #Q)110001016\"" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 185 "We are ready t o create the S-Box. We would like it to be a table indexes by the pos sible byte values used for look ups. This is the most efficient form \+ for later use in the algorithm." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 64 "SBoxTable := table([seq(intToBits(i)=sMakeIBits(i), i=0..255)] );" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%*SBoxTableG-%&TABLEG6#7\\[l/Q) 001100106\"Q)00100011F+/Q)01111111F+Q)11010010F+/Q)01100100F+Q)0100001 1F+/Q)01101000F+Q)01000101F+/Q)00010100F+Q)11111010F+/Q)01110101F+Q)10 011101F+/Q)11010000F+Q)01110000F+/Q)00110011F+Q)11000011F+/Q)01100101F +Q)01001101F+/Q)10111000F+Q)01101100F+/Q)01110010F+Q)01000000F+/Q)1011 0000F+Q)11100111F+/Q)01111100F+Q)00010000F+/Q)00111111F+F:/Q)01100110F +F@/FAQ)00101110F+/Q)11100110F+Q)10001110F+/Q)00000000F+Q)01100011F+/Q )10101010F+Q)10101100F+/Q)10101101F+Q)10010101F+/Q)11011110F+Q)0001110 1F+/Q)00010111F+Q)11110000F+/Q)00100111F+Q)11001100F+/F5Q)01101110F+/Q )01111110F+Q)11110011F+/Q)10001001F+Q)10100111F+/Q)11011011F+Q)1011100 1F+/Q)01000001F+Q)10000011F+/Q)00101000F+Q)00110100F+/Q)10000000F+Q)11 001101F+/Q)10111010F+Q)11110100F+/Q)00001101F+Q)11010111F+/FVQ)0011000 1F+/Q)10000110F+Q)01000100F+/Q)11110101F+FX/Q)00010001F+Q)10000010F+/F \\qQ)10111111F+/Q)01110110F+Q)00111000F+/FjoF^q/Q)00100110F+Q)11110111 F+/FaqQ)11000111F+/Q)00001100F+Q)11111110F+/Q)10010111F+Q)10001000F+/Q )10100100F+Q)01001001F+/Q)11101011F+Q)11101001F+/Q)01001000F+Q)0101001 0F+/Q)10001011F+Q)00111101F+/FiqQ)00010011F+/FjrQ)11000100F+/Q)1100101 1F+Q)00011111F+/Q)10001010F+Fio/FYQ)00011001F+/Q)10110010F+Q)00110111F +/Q)11000000F+F[q/FipQ)10111101F+/Q)00101001F+Q)10100101F+/Q)00110101F +Q)10010110F+/Q)01010011F+Q)11101101F+/FDQ)11100011F+/Q)10000001F+Ffr/ Q)10110111F+Q)10101001F+/Q)10110001F+Q)11001000F+/Q)00101010F+Q)111001 01F+/Q)11001111F+F_t/Q)01110100F+Q)10010010F+/Q)01000110F+Q)01011010F+ /Q)10010000F+Q)01100000F+/Q)11010001F+Q)00111110F+/FhsQ)01111101F+/Q)0 0001110F+Q)10101011F+/Q)10101110F+Q)11100100F+/Q)10011110F+Q)00001011F +/Q)10011000F+Fev/Q)10110011F+Q)01101101F+/Q)11101010F+Q)10000111F+/Q) 11000110F+Q)10110100F+/Q)00010101F+Q)01011001F+/FdqQ)00011011F+/Q)0010 1101F+Q)11011000F+/Q)00000111F+Q)11000101F+/Q)10011010F+FF/Q)00010110F +Q)01000111F+/Q)11111100F+FL/FJQ)00001001F+/F>Q)01010001F+/FhtQ)011110 10F+/F[rQ)00001000F+/Q)00011000F+F[o/Q)10010011F+Q)11011100F+/F\\oF]v/ Q)01001110F+Q)00101111F+/Q)01011011F+Q)00111001F+/F]pQ)01011100F+/Q)01 000010F+Q)00101100F+/FatQ)11010100F+/Q)01101010F+Q)00000010F+/Q)000001 00F+Q)11110010F+/F][lQ)01110001F+/Q)10000100F+Q)01011111F+/Q)00011100F +Q)10011100F+/FinQ)10010001F+/Q)11001010F+Fbv/Q)00000110F+Q)01101111F+ /Q)10100011F+Q)00001010F+/Q)10000101F+Fir/F]sQ)00111011F+/FivF=/Q)1011 0101F+Q)11010101F+/Q)11011001F+F]u/Q)01001111F+Fi[l/Fd\\lQ)10101000F+/ Q)01110011F+Q)10001111F+/Q)11111001F+Q)10011001F+/Q)11111101F+Q)010101 00F+/Q)11101110F+Fep/Q)10001100F+F1/Q)10111110F+Fcw/F]yQ)10100110F+/Q) 00000011F+Q)01111011F+/F_\\lFeu/FeoQ)01001011F+/Q)00111010F+Fhp/FfnQ)1 1111011F+/Q)11100001F+Q)11111000F+/F2Q)00011010F+/Q)11011101F+Q)110000 01F+/Fe_lQ)10100010F+/Q)01100111F+Fi\\l/Q)00001111F+F]r/F`sQ)00011110F +/FdrFax/Fc_lFbp/Q)00101011F+Q)11110001F+/F/F^]l/F_oF\\s/Fi^lQ)0010000 1F+/Q)01101011F+F./Q)10100000F+Q)11100000F+/Q)00100100F+Q)00110110F+/F ``lFI/Q)01100001F+Q)11101111F+/Q)10100001F+F*/Fe[lF\\p/Q)00100101F+FR/ F^^lQ)00100000F+/Q)11110110F+F\\[l/Q)00110000F+Fd[l/Q)01100010F+Fhn/FM Q)10010100F+/Q)01011110F+Q)01011000F+/Q)01010000F+F`u/F_xFao/Fj[lF`v/Q )11101000F+Q)10011011F+/Q)00000101F+F[al/FgoQ)10011111F+/F[vF]cl/FhuQ) 11010011F+/FazFcq/Q)01001010F+Q)11010110F+/Q)01110111F+Ffq/Q)01111000F +Q)10111100F+/Q)11001001F+Fg_l/FfvFd^l/F_qF`w/F,Far/FcvFc]l/Q)11011010 F+Q)01010111F+/F`_lF^`l/FgxQ)10101111F+/F\\_lF[x/Q)00111100F+F_s/F^dlF C/F8Fix/FfsFdo/Q)01111001F+Q)10110110F+/Q)11000010F+Fjal/Q)11011111F+F fw/FdblQ)00100010F+/F]tFft/F\\wFct/F^clF7/F_]lFh^l/FbrF4/FjsF\\\\l/Fe] lFeel/Q)01010110F+Fju/F[uFc\\l/FboFb^l/FhzQ)00010010F+/FielF`z/Q)11101 100F+Q)11001110F+/FcuFhq/F\\xF]el/FcpFifl/Fh]lFg]l/FfpF^z/F^vFa]l/F[]l Q)11100010F+/FbxQ)10001101F+/Q)01010101F+Fdy/F^wQ)11111111F+/FPFa\\l/F dwQ)01101001F+/Fe`lFgal/FGFibl/FezFdx/F`pFbfl/FjflFes/FcsFen/FexF\\t/F bclF_p/FjxFdal/Fb[lF[dl/Fi`lF]^l/F\\blFgu/FbyF]al/F^uFhv/FhyF[w/FgdlFg z/Fg\\lF\\`l/F_[lFbs/FjzFhcl/FawFbbl/Q)10111011F+F^x/Q)01001100F+Fjt/F eclFT/FgrFail/Q)01011101F+Fcil/F]\\lF^o/FdtF_y/FjdlFbel/F^alFb_l/F^rF \\y/FdglFgil/FauFfgl/FaalF`cl/FhglFay/F[hlFj]l/F[^lF`^l/FealFgel/F\\zF `bl/Ff^lF`al/Fh_lF]dl/FfyQ)00000001F+/FhjlFO/FjyFfdl/FgblFa[l/FfflF`dl /F;Ffbl/FcelFdz/FgwFd`l/Fg[lFf\\l/Fj_lF^_l/FiclF^bl/FbglFiw" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 89 "For checking that we have the corr ect values we would like convert the table to a matrix." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 69 "SBoxMatrix1 := matrix(16,16,[seq(SB oxTable[intToBits(i)],i=0..255)]);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6# >%,SBoxMatrix1G-%'matrixG6#7272Q)011000116\"Q)01111100F+Q)01110111F+Q) 01111011F+Q)11110010F+Q)01101011F+Q)01101111F+Q)11000101F+Q)00110000F+ Q)00000001F+Q)01100111F+Q)00101011F+Q)11111110F+Q)11010111F+Q)10101011 F+Q)01110110F+72Q)11001010F+Q)10000010F+Q)11001001F+Q)01111101F+Q)1111 1010F+Q)01011001F+Q)01000111F+Q)11110000F+Q)10101101F+Q)11010100F+Q)10 100010F+Q)10101111F+Q)10011100F+Q)10100100F+Q)01110010F+Q)11000000F+72 Q)10110111F+Q)11111101F+Q)10010011F+Q)00100110F+Q)00110110F+Q)00111111 F+Q)11110111F+Q)11001100F+Q)00110100F+Q)10100101F+Q)11100101F+Q)111100 01F+Q)01110001F+Q)11011000F+Q)00110001F+Q)00010101F+72Q)00000100F+Q)11 000111F+Q)00100011F+Q)11000011F+Q)00011000F+Q)10010110F+Q)00000101F+Q) 10011010F+Q)00000111F+Q)00010010F+Q)10000000F+Q)11100010F+Q)11101011F+ Q)00100111F+Q)10110010F+Q)01110101F+72Q)00001001F+Q)10000011F+Q)001011 00F+Q)00011010F+Q)00011011F+Q)01101110F+Q)01011010F+Q)10100000F+Q)0101 0010F+Q)00111011F+Q)11010110F+Q)10110011F+Q)00101001F+Q)11100011F+Q)00 101111F+Q)10000100F+72Q)01010011F+Q)11010001F+Q)00000000F+Q)11101101F+ Q)00100000F+Q)11111100F+Q)10110001F+Q)01011011F+Q)01101010F+Q)11001011 F+Q)10111110F+Q)00111001F+Q)01001010F+Q)01001100F+Q)01011000F+Q)110011 11F+72Q)11010000F+Q)11101111F+Q)10101010F+Q)11111011F+Q)01000011F+Q)01 001101F+Q)00110011F+Q)10000101F+Q)01000101F+Q)11111001F+Q)00000010F+Q) 01111111F+Q)01010000F+Q)00111100F+Q)10011111F+Q)10101000F+72Q)01010001 F+Q)10100011F+Q)01000000F+Q)10001111F+Q)10010010F+Q)10011101F+Q)001110 00F+Q)11110101F+Q)10111100F+Q)10110110F+Q)11011010F+Q)00100001F+Q)0001 0000F+Q)11111111F+Q)11110011F+Q)11010010F+72Q)11001101F+Q)00001100F+Q) 00010011F+Q)11101100F+Q)01011111F+Q)10010111F+Q)01000100F+Q)00010111F+ Q)11000100F+Q)10100111F+Q)01111110F+Q)00111101F+Q)01100100F+Q)01011101 F+Q)00011001F+Q)01110011F+72Q)01100000F+Q)10000001F+Q)01001111F+Q)1101 1100F+Q)00100010F+Q)00101010F+Q)10010000F+Q)10001000F+Q)01000110F+Q)11 101110F+Q)10111000F+Q)00010100F+Q)11011110F+Q)01011110F+Q)00001011F+Q) 11011011F+72Q)11100000F+Q)00110010F+Q)00111010F+Q)00001010F+Q)01001001 F+Q)00000110F+Q)00100100F+Q)01011100F+Q)11000010F+Q)11010011F+Q)101011 00F+Q)01100010F+Q)10010001F+Q)10010101F+Q)11100100F+Q)01111001F+72Q)11 100111F+Q)11001000F+Q)00110111F+Q)01101101F+Q)10001101F+Q)11010101F+Q) 01001110F+Q)10101001F+Q)01101100F+Q)01010110F+Q)11110100F+Q)11101010F+ Q)01100101F+Q)01111010F+Q)10101110F+Q)00001000F+72Q)10111010F+Q)011110 00F+Q)00100101F+Q)00101110F+Q)00011100F+Q)10100110F+Q)10110100F+Q)1100 0110F+Q)11101000F+Q)11011101F+Q)01110100F+Q)00011111F+Q)01001011F+Q)10 111101F+Q)10001011F+Q)10001010F+72Q)01110000F+Q)00111110F+Q)10110101F+ Q)01100110F+Q)01001000F+Q)00000011F+Q)11110110F+Q)00001110F+Q)01100001 F+Q)00110101F+Q)01010111F+Q)10111001F+Q)10000110F+Q)11000001F+Q)000111 01F+Q)10011110F+72Q)11100001F+Q)11111000F+Q)10011000F+Q)00010001F+Q)01 101001F+Q)11011001F+Q)10001110F+Q)10010100F+Q)10011011F+Q)00011110F+Q) 10000111F+Q)11101001F+Q)11001110F+Q)01010101F+Q)00101000F+Q)11011111F+ 72Q)10001100F+Q)10100001F+Q)10001001F+Q)00001101F+Q)10111111F+Q)111001 10F+Q)01000010F+Q)01101000F+Q)01000001F+Q)10011001F+Q)00101101F+Q)0000 1111F+Q)10110000F+Q)01010100F+Q)10111011F+Q)00010110F+" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 98 "We would then like to convert the entries to integer values so we can check them against the book." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 42 "SBoxMatrix2 := map( bitToInt,SBoxMa trix1);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%,SBoxMatrix2G-%'matrixG6# 7272\"#**\"$C\"\"$>\"\"$B\"\"$U#\"$2\"\"$6\"\"$(>\"#[\"\"\"\"$.\"\"#V \"$a#\"$:#\"$r\"\"$=\"72\"$-#\"$I\"\"$,#\"$D\"\"$]#\"#*)\"#r\"$S#\"$t \"\"$7#\"$i\"\"$v\"\"$c\"\"$k\"\"$9\"\"$#>72\"$$=\"$`#\"$Z\"\"#Q\"#a\" #j\"$Z#\"$/#\"#_\"$l\"\"$H#\"$T#\"$8\"\"$;#\"#\\\"#@72\"\"%\"$*>\"#N\" $&>\"#C\"$]\"\"\"&\"$a\"\"\"(\"#=\"$G\"\"$E#\"$N#\"#R\"$y\"\"$<\"72\" \"*\"$J\"\"#W\"#E\"#F\"$5\"\"#!*\"$g\"\"##)\"#f\"$9#\"$z\"\"#T\"$F#\"# Z\"$K\"72\"#$)\"$4#\"\"!\"$P#\"#K\"$_#\"$x\"\"#\"*\"$1\"\"$.#\"$!>\"#d \"#u\"#w\"#))\"$2#72\"$3#\"$R#\"$q\"\"$^#\"#n\"#x\"#^\"$L\"\"#p\"$\\# \"\"#\"$F\"\"#!)\"#g\"$f\"\"$o\"72\"#\")\"$j\"\"#k\"$V\"\"$Y\"\"$d\"\" #c\"$X#\"$)=\"$#=\"$=#\"#L\"#;\"$b#\"$V#\"$5#72\"$0#\"#7\"#>\"$O#\"#&* \"$^\"\"#o\"#B\"$'>\"$n\"\"$E\"\"#h\"$+\"\"#$*\"#D\"$:\"72\"#'*\"$H\" \"#z\"$?#\"#M\"#U\"$W\"\"$O\"\"#q\"$Q#\"$%=\"#?\"$A#\"#%*\"#6\"$>#72\" $C#\"#]\"#e\"#5\"#t\"\"'\"#O\"##*\"$%>\"$6#\"$s\"\"#)*\"$X\"\"$\\\"\"$ G#\"$@\"72\"$J#\"$+#\"#b\"$4\"\"$T\"\"$8#\"#y\"$p\"\"$3\"\"#')\"$W#\"$ M#\"$,\"\"$A\"\"$u\"\"\")72\"$'=\"$?\"\"#P\"#Y\"#G\"$m\"\"$!=\"$)>\"$K #\"$@#\"$;\"\"#J\"#v\"$*=\"$R\"\"$Q\"72\"$7\"\"#i\"$\"=\"$-\"\"#s\"\"$ \"$Y#\"#9\"#(*\"#`\"#()\"$&=\"$M\"\"$$>\"#H\"$e\"72\"$D#\"$[#\"$_\"\"# <\"$0\"\"$<#\"$U\"\"$[\"\"$b\"\"#I\"$N\"\"$L#\"$1#\"#&)\"#S\"$B#72\"$S \"\"$h\"\"$P\"\"#8\"$\">\"$I#\"#m\"$/\"\"#l\"$`\"\"#X\"#:\"$w\"\"#%)\" $(=\"#A" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 185 "We would also like to create a table for the inverse of the S-Box look up. Since we are wo rking with tables, this is simply creating a table where the index and the entry are reversed." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 67 "InvSBoxTable := table([seq(sMakeIBits(i)=intToBits(i), i=0..255)]);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%-InvSBoxTableG-%&TABLEG6#7\\[l/Q)0 01100106\"Q)10100001F+/Q)01111111F+Q)01101011F+/Q)01100100F+Q)10001100 F+/Q)01101000F+Q)11110111F+/Q)00010100F+Q)10011011F+/Q)01110101F+Q)001 11111F+/Q)11010000F+Q)01100000F+/Q)00110011F+Q)01100110F+/Q)01100101F+ Q)10111100F+/Q)10111000F+Q)10011010F+/Q)01110010F+Q)00011110F+/Q)10110 000F+Q)11111100F+/Q)01111100F+Q)00000001F+/F;Q)00100101F+/Q)11000011F+ F@/FAQ)11010011F+/Q)11100110F+Q)11110101F+/Q)00000000F+Q)01010010F+/Q) 10101101F+Q)00011000F+/Q)10101010F+Q)01100010F+/Q)11011110F+Q)10011100 F+/Q)00100111F+Q)00111101F+/Q)00010111F+Q)10000111F+/Q)01000101F+F4/Q) 01111110F+Q)10001010F+/Q)10001001F+Q)11110010F+/Q)11011011F+Q)10011111 F+/Q)01000001F+Q)11111000F+/Q)10000000F+Q)00111010F+/Q)10111010F+Q)110 00000F+/Q)00101000F+Q)11101110F+/Q)00101110F+FT/Q)10000110F+Q)11011100 F+/Q)00001101F+Q)11110011F+/FYQ)01110111F+/Q)11110100F+Fhp/Q)00010001F +Q)11100011F+/Q)01110110F+Q)00001111F+/FdqFio/Q)00100110F+Q)00100011F+ /Q)00110001F+F^q/Q)00001100F+Q)10000001F+/Q)10010111F+Q)10000101F+/Q)1 0100100F+Q)00011101F+/Q)11101011F+Q)00111100F+/Q)10001011F+Q)11001110F +/Q)01001000F+Q)11010100F+/Q)10000010F+Fjq/Q)11001011F+Q)01011001F+/Q) 10001000F+Fir/FjoQ)11001111F+/Q)10001110F+FX/FipQ)00011111F+/Q)1011001 0F+Q)00111110F+/Q)11001101F+Fep/Q)00101001F+Q)01001100F+/Q)01010011F+Q )01010000F+/Q)00110101F+Q)11011001F+/Q)10110111F+Q)00100000F+/Q)010011 01F+FC/FgrQ)10010001F+/Q)10110001F+Q)01010110F+/F_tQ)01011111F+/Q)0010 1010F+Q)10010101F+/Q)01110100F+Q)11001010F+/Q)01000110F+Q)10011000F+/Q )11010001F+Q)01010001F+/Q)10010000F+Q)10010110F+/Q)00010011F+Fhs/Q)101 01110F+Q)10111110F+/Q)00001110F+Q)11010111F+/Q)10011110F+Q)11011111F+/ Q)10110011F+Q)01001011F+/FfvQ)11100010F+/Q)11101010F+Q)10111011F+/Q)11 000110F+Q)11000111F+/Q)00010101F+Q)00101111F+/Q)01000100F+F`q/Q)001011 01F+Q)11111010F+/Q)00000111F+Q)00111000F+/FGQ)00110111F+/Q)00010110F+Q )11111111F+/FMQ)01010101F+/Q)01000000F+FI/Q)01110000F+F=/Q)10111101F+F ht/Q)10111111F+Fhq/FinQ)00110100F+/Q)10010011F+Q)00100010F+/F`vFhn/Q)0 1011011F+Q)01010111F+/Q)10100111F+F\\p/Q)01001110F+Q)10110110F+/Q)0100 0010F+Q)11110110F+/Q)00011001F+Fat/Q)01101010F+Q)01011000F+/Q)00000100 F+Q)00110000F+/Q)00101100F+F\\[l/Q)10000100F+Q)01001111F+/FcvQ)0001000 0F+/Q)10101100F+F[o/Q)00011100F+Q)11000100F+/Q)00000110F+Q)10100101F+/ Q)10100011F+Q)01110001F+/FjrQ)01100111F+/F>F[w/Q)01001001F+F\\s/Q)1011 0101F+Q)11010010F+/FauQ)11100101F+/Fj[lQ)10010010F+/Q)01101111F+Fc\\l/ Q)11111101F+Q)00100001F+/Q)11111001F+Q)01101001F+/Q)01110011F+Q)100011 11F+/F\\qQ)10011001F+/F2Q)11110000F+/Q)11000101F+F\\y/FawQ)01011010F+/ FhuF^\\l/Q)00000011F+Q)11010101F+/Q)11001100F+Fao/Q)01100011F+Fen/FfpQ )10100010F+/Q)11100001F+Q)11100000F+/Q)01000011F+F1/Q)11011101F+Q)1100 1001F+/Fi\\lQ)00001010F+/Q)00011010F+Fe_l/Q)11101001F+F_s/F^rQ)1111101 1F+/FbxFdr/FcpFb_l/Q)00101011F+Q)00001011F+/F_]lF./Q)01111011F+Fi^l/F] sF^o/F/Q)00000101F+/Q)10100000F+Q)01000111F+/Q)00100100F+Q)10100110F+/ F]pFd[l/Q)01100001F+Q)11011000F+/FJF^`l/F,Q)11110001F+/FRQ)11000010F+/ Q)01010100F+Fg]l/F][lQ)11010110F+/Fe[lQ)00001000F+/F\\oQ)10101011F+/Q) 11100111F+FL/Q)01011110F+Q)10011101F+/F^uQ)01101100F+/FeoF^x/F]vFi[l/Q )11101000F+Q)11001000F+/F[alQ)00110110F+/Q)01101110F+Fgo/F^clFju/FaqF` z/Q)10101001F+Fcu/FfqQ)00000010F+/Fh_lQ)00010010F+/Q)01001010F+Q)01011 100F+/Q)01111000F+Q)11000001F+/FdwFcq/Ff^lFev/FbrF*/Fc]lFbv/F``lF^_l/Q )11011010F+Q)01111010F+/Q)00011011F+Fgx/FjwF\\_l/F`sQ)01101101F+/FDF_d l/FjxF7/FboFbs/Q)01111001F+Q)10101111F+/FjalQ)10101000F+/FgwQ)11101111 F+/Q)10010100F+Fdbl/FctFjs/Fj^lF^]l/FftFhv/F8F]cl/F5Far/Fa\\lF]t/FeelF e]l/F[vQ)10111001F+/Fb^lFdo/Fd\\lFjt/Q)00111001F+Fdz/Q)11101100F+Q)100 00011F+/FazFiel/F[rFfu/FiflFbp/F^^lF]^l/F]elFiw/F^zF[q/Fa]lF_v/Q)00111 011F+F\\]l/Q)10110100F+Fax/FdyQ)11101101F+/Q)01111101F+F^w/FhalFd`l/F \\\\lFO/Q)11100100F+F`w/FiblFF/FexFiz/FbflF_p/FcsFhfl/FfnFes/F[tFdx/F` pFbcl/FealFix/FhclFa[l/Fh]lFh`l/F^alFay/FduF\\bl/F\\wF`u/FivFhy/FezFgd l/FfsF_[l/Fj_lFf\\l/FbblFcw/F]dlFgz/F_xQ)11111110F+/FailFfr/F[uQ)01011 101F+/FVFfcl/F_oF`\\l/FdilQ)10001101F+/F_yFet/FcelFjdl/Fc_lF]al/FfglF] u/F]yF]r/FhilFdgl/F`clF`al/FbyFhgl/F[^lF\\hl/F`^lFj]l/FgelFdal/F`blF\\ z/FaalFd^l/F`dlFg_l/Q)00001001F+Ffy/FPFhjl/FhdlFjy/Fb[lFfbl/FjclFffl/F gblF:/FjzFbel/Fe`lFfw/F`_lF\\`l/Fg\\lFg[l/F^blF\\dl/F\\xFbgl" }}}} {SECT 0 {PARA 4 "" 0 "" {TEXT -1 12 "Results only" }}{EXCHG {PARA 0 " " 0 "" {TEXT -1 167 "We would like to record the result of the creatio n of the S-Box table and its inverse so that we can use them in anothe r worksheet without going through all the steps." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 6420 "SBoxTable :=table([\"01000010\" = \"0010110 0\", \"10101000\" = \"11000010\", \"10110110\" = \"01001110\", \"00011 010\" = \"10100010\", \"00111000\" = \"00000111\", \"11011000\" = \"01 100001\", \"00000101\" = \"01101011\", \"00101111\" = \"00010101\", \" 00110101\" = \"10010110\", \"00111111\" = \"01110101\", \"10000010\" = \"00010011\", \"00000110\" = \"01101111\", \"00100011\" = \"00100110 \", \"10010010\" = \"01001111\", \"11000000\" = \"10111010\", \"110100 00\" = \"01110000\", \"10111010\" = \"11110100\", \"10010111\" = \"100 01000\", \"10101011\" = \"01100010\", \"11100110\" = \"10001110\", \"1 1101100\" = \"11001110\", \"00011101\" = \"10100100\", \"00000000\" = \+ \"01100011\", \"10100010\" = \"00111010\", \"11000001\" = \"01111000\" , \"00011001\" = \"11010100\", \"01101110\" = \"10011111\", \"11101011 \" = \"11101001\", \"11101111\" = \"11011111\", \"00100111\" = \"11001 100\", \"11110100\" = \"10111111\", \"00000001\" = \"01111100\", \"000 11011\" = \"10101111\", \"01110111\" = \"11110101\", \"11010101\" = \" 00000011\", \"00010111\" = \"11110000\", \"00111100\" = \"11101011\", \+ \"10111011\" = \"11101010\", \"01000000\" = \"00001001\", \"11111011\" = \"00001111\", \"01111001\" = \"10110110\", \"10110000\" = \"1110011 1\", \"10100100\" = \"01001001\", \"11000010\" = \"00100101\", \"11110 111\" = \"01101000\", \"00110100\" = \"00011000\", \"01011100\" = \"01 001010\", \"00001101\" = \"11010111\", \"00111110\" = \"10110010\", \" 01010010\" = \"00000000\", \"01001111\" = \"10000100\", \"11000101\" = \"10100110\", \"11110110\" = \"01000010\", \"01110110\" = \"00111000 \", \"00100010\" = \"10010011\", \"00101011\" = \"11110001\", \"110010 00\" = \"11101000\", \"01010110\" = \"10110001\", \"10101111\" = \"011 11001\", \"11011010\" = \"01010111\", \"11111010\" = \"00101101\", \"0 0101110\" = \"00110001\", \"11011001\" = \"00110101\", \"11100000\" = \+ \"11100001\", \"01101111\" = \"10101000\", \"11100100\" = \"01101001\" , \"01000101\" = \"01101110\", \"00001000\" = \"00110000\", \"00000010 \" = \"01110111\", \"00011000\" = \"10101101\", \"00010100\" = \"11111 010\", \"01000001\" = \"10000011\", \"10101110\" = \"11100100\", \"101 00110\" = \"00100100\", \"01110000\" = \"01010001\", \"01010100\" = \" 00100000\", \"11100001\" = \"11111000\", \"10111000\" = \"01101100\", \+ \"00100110\" = \"11110111\", \"10110011\" = \"01101101\", \"11000100\" = \"00011100\", \"11100111\" = \"10010100\", \"11101010\" = \"1000011 1\", \"00001100\" = \"11111110\", \"00110110\" = \"00000101\", \"01010 000\" = \"01010011\", \"11101000\" = \"10011011\", \"10001110\" = \"00 011001\", \"11001001\" = \"11011101\", \"11001011\" = \"00011111\", \" 10111100\" = \"01100101\", \"00100100\" = \"00110110\", \"01011110\" = \"01011000\", \"01001000\" = \"01010010\", \"10000011\" = \"11101100 \", \"11100101\" = \"11011001\", \"11011101\" = \"11000001\", \"000100 00\" = \"11001010\", \"01001101\" = \"11100011\", \"01111010\" = \"110 11010\", \"11010100\" = \"01001000\", \"00101100\" = \"01110001\", \"0 1011011\" = \"00111001\", \"01011101\" = \"01001100\", \"10011100\" = \+ \"11011110\", \"01001110\" = \"00101111\", \"11001110\" = \"10001011\" , \"00011111\" = \"11000000\", \"00101010\" = \"11100101\", \"11110000 \" = \"10001100\", \"00110111\" = \"10011010\", \"11101101\" = \"01010 101\", \"11100011\" = \"00010001\", \"10011011\" = \"00010100\", \"010 10001\" = \"11010001\", \"10100101\" = \"00000110\", \"01011111\" = \" 11001111\", \"01100001\" = \"11101111\", \"10001010\" = \"01111110\", \+ \"00101001\" = \"10100101\", \"00110000\" = \"00000100\", \"01100111\" = \"10000101\", \"10101100\" = \"10010001\", \"11010010\" = \"1011010 1\", \"00100000\" = \"10110111\", \"10000101\" = \"10010111\", \"01101 001\" = \"11111001\", \"00000100\" = \"11110010\", \"10110100\" = \"10 001101\", \"01100010\" = \"10101010\", \"01101010\" = \"00000010\", \" 01000111\" = \"10100000\", \"00111001\" = \"00010010\", \"11010001\" = \"00111110\", \"10010011\" = \"11011100\", \"10011101\" = \"01011110 \", \"01110101\" = \"10011101\", \"11001111\" = \"10001010\", \"000010 11\" = \"00101011\", \"01111111\" = \"11010010\", \"11010011\" = \"011 00110\", \"00011100\" = \"10011100\", \"11111110\" = \"10111011\", \"0 0011110\" = \"01110010\", \"10000001\" = \"00001100\", \"10001011\" = \+ \"00111101\", \"00010110\" = \"01000111\", \"10010100\" = \"00100010\" , \"10110101\" = \"11010101\", \"01110011\" = \"10001111\", \"11011111 \" = \"10011110\", \"11111001\" = \"10011001\", \"10101010\" = \"10101 100\", \"10111101\" = \"01111010\", \"11000111\" = \"11000110\", \"111 10010\" = \"10001001\", \"01101000\" = \"01000101\", \"10010000\" = \" 01100000\", \"00110001\" = \"11000111\", \"01011000\" = \"01101010\", \+ \"10000000\" = \"11001101\", \"10000100\" = \"01011111\", \"10001111\" = \"01110011\", \"10110111\" = \"10101001\", \"10011000\" = \"0100011 0\", \"01111101\" = \"11111111\", \"10000111\" = \"00010111\", \"11110 101\" = \"11100110\", \"11000110\" = \"10110100\", \"10110010\" = \"00 110111\", \"01101011\" = \"01111111\", \"01111100\" = \"00010000\", \" 10110001\" = \"11001000\", \"00111011\" = \"11100010\", \"01000100\" = \"00011011\", \"11111111\" = \"00010110\", \"01100110\" = \"00110011 \", \"01111110\" = \"11110011\", \"10100001\" = \"00110010\", \"001011 01\" = \"11011000\", \"01011010\" = \"10111110\", \"00111101\" = \"001 00111\", \"10101101\" = \"10010101\", \"10000110\" = \"01000100\", \"0 0010010\" = \"11001001\", \"11110001\" = \"10100001\", \"01101101\" = \+ \"00111100\", \"10011010\" = \"10111000\", \"01000110\" = \"01011010\" , \"01001001\" = \"00111011\", \"10100000\" = \"11100000\", \"11101110 \" = \"00101000\", \"11111101\" = \"01010100\", \"00001111\" = \"01110 110\", \"00111010\" = \"10000000\", \"11100010\" = \"10011000\", \"011 10001\" = \"10100011\", \"11111000\" = \"01000001\", \"11000011\" = \" 00101110\", \"00010101\" = \"01011001\", \"01010011\" = \"11101101\", \+ \"01110010\" = \"01000000\", \"10111110\" = \"10101110\", \"00001110\" = \"10101011\", \"00010001\" = \"10000010\", \"10001100\" = \"0110010 0\", \"01001010\" = \"11010110\", \"10101001\" = \"11010011\", \"11001 100\" = \"01001011\", \"10001101\" = \"01011101\", \"11001010\" = \"01 110100\", \"10001001\" = \"10100111\", \"10010001\" = \"10000001\", \" 11011011\" = \"10111001\", \"00010011\" = \"01111101\", \"00100101\" = \"00111111\", \"01100000\" = \"11010000\", \"01001100\" = \"00101001 \", \"10011111\" = \"11011011\", \"11101001\" = \"00011110\", \"000010 01\" = \"00000001\", \"00000111\" = \"11000101\", \"01011001\" = \"110 01011\", \"01111011\" = \"00100001\", \"10001000\" = \"11000100\", \"1 0111111\" = \"00001000\", \"00101000\" = \"00110100\", \"10100111\" = \+ \"01011100\", \"10111001\" = \"01010110\", \"00000011\" = \"01111011\" , \"00110010\" = \"00100011\", \"01001011\" = \"10110011\", \"11110011 \" = \"00001101\", \"01010111\" = \"01011011\", \"11011100\" = \"10000 110\", \"10010101\" = \"00101010\", \"10010110\" = \"10010000\", \"011 00011\" = \"11111011\", \"01100101\" = \"01001101\", \"11010111\" = \" 00001110\", \"01110100\" = \"10010010\", \"11001101\" = \"10111101\", \+ \"01010101\" = \"11111100\", \"01101100\" = \"01010000\", \"10100011\" = \"00001010\", \"11111100\" = \"10110000\", \"10011110\" = \"0000101 1\", \"11011110\" = \"00011101\", \"01111000\" = \"10111100\", \"10011 001\" = \"11101110\", \"01000011\" = \"00011010\", \"11010110\" = \"11 110110\", \"00001010\" = \"01100111\", \"00110011\" = \"11000011\", \" 01100100\" = \"01000011\", \"00100001\" = \"11111101\"]):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 6425 "InvSBoxTable := table([\"0000001 0\" = \"01101010\", \"01101001\" = \"11100100\", \"01100000\" = \"1001 0000\", \"00001111\" = \"11111011\", \"00010100\" = \"10011011\", \"00 100000\" = \"01010100\", \"11101100\" = \"10000011\", \"10111110\" = \+ \"01011010\", \"01101100\" = \"10111000\", \"10001000\" = \"10010111\" , \"01011110\" = \"10011101\", \"00100100\" = \"10100110\", \"11111000 \" = \"11100001\", \"00111110\" = \"11010001\", \"11011010\" = \"01111 010\", \"11110000\" = \"00010111\", \"10111000\" = \"10011010\", \"001 01001\" = \"01001100\", \"11100101\" = \"00101010\", \"00000111\" = \" 00111000\", \"10110101\" = \"11010010\", \"00111001\" = \"01011011\", \+ \"11100000\" = \"10100000\", \"11110001\" = \"00101011\", \"01110011\" = \"10001111\", \"00100111\" = \"00111101\", \"00101000\" = \"1110111 0\", \"11110110\" = \"11010110\", \"01010011\" = \"01010000\", \"00001 011\" = \"10011110\", \"11001001\" = \"00010010\", \"00001000\" = \"10 111111\", \"00000100\" = \"00110000\", \"00101010\" = \"10010101\", \" 10010000\" = \"10010110\", \"10101100\" = \"10101010\", \"01100110\" = \"11010011\", \"10111111\" = \"11110100\", \"01000011\" = \"01100100 \", \"00001101\" = \"11110011\", \"10000001\" = \"10010001\", \"010010 01\" = \"10100100\", \"01001110\" = \"10110110\", \"00110000\" = \"000 01000\", \"10100101\" = \"00101001\", \"10001010\" = \"11001111\", \"1 1110101\" = \"01110111\", \"00000110\" = \"10100101\", \"10111010\" = \+ \"11000000\", \"10110010\" = \"00111110\", \"11110111\" = \"00100110\" , \"00111111\" = \"00100101\", \"00000000\" = \"01010010\", \"11001110 \" = \"11101100\", \"10101111\" = \"00011011\", \"00110011\" = \"01100 110\", \"01111011\" = \"00000011\", \"10000010\" = \"00010001\", \"111 01010\" = \"10111011\", \"10110001\" = \"01010110\", \"11000101\" = \" 00000111\", \"10000011\" = \"01000001\", \"11110011\" = \"01111110\", \+ \"10111011\" = \"11111110\", \"01101101\" = \"10110011\", \"10001111\" = \"01110011\", \"01101010\" = \"01011000\", \"00100010\" = \"1001010 0\", \"01000101\" = \"01101000\", \"00000001\" = \"00001001\", \"00010 010\" = \"00111001\", \"01010000\" = \"01101100\", \"10011101\" = \"01 110101\", \"10101011\" = \"00001110\", \"10000110\" = \"11011100\", \" 00001110\" = \"11010111\", \"11011000\" = \"00101101\", \"01011111\" = \"10000100\", \"10001011\" = \"11001110\", \"01100101\" = \"10111100 \", \"10111101\" = \"11001101\", \"10010011\" = \"00100010\", \"100001 00\" = \"01001111\", \"11101111\" = \"01100001\", \"11001000\" = \"101 10001\", \"11110100\" = \"10111010\", \"00101110\" = \"11000011\", \"1 0010010\" = \"01110100\", \"00110010\" = \"10100001\", \"10011100\" = \+ \"00011100\", \"00100011\" = \"00110010\", \"00101011\" = \"00001011\" , \"01010100\" = \"11111101\", \"11011001\" = \"11100101\", \"10101001 \" = \"10110111\", \"01110101\" = \"00111111\", \"11011100\" = \"10010 011\", \"10011011\" = \"11101000\", \"01010101\" = \"11101101\", \"110 00110\" = \"11000111\", \"01100010\" = \"10101011\", \"10101101\" = \" 00011000\", \"11100100\" = \"10101110\", \"01000111\" = \"00010110\", \+ \"00010101\" = \"00101111\", \"11010110\" = \"01001010\", \"10011110\" = \"11011111\", \"01001010\" = \"01011100\", \"10100110\" = \"1100010 1\", \"01111000\" = \"11000001\", \"01111101\" = \"00010011\", \"00010 111\" = \"10000111\", \"10000101\" = \"01100111\", \"00100110\" = \"00 100011\", \"01111100\" = \"00000001\", \"11011111\" = \"11101111\", \" 00011111\" = \"11001011\", \"11001011\" = \"01011001\", \"01001100\" = \"01011101\", \"01110010\" = \"00011110\", \"01101011\" = \"00000101 \", \"01000010\" = \"11110110\", \"10011010\" = \"00110111\", \"111111 10\" = \"00001100\", \"00011010\" = \"01000011\", \"10110110\" = \"011 11001\", \"10100001\" = \"11110001\", \"11100011\" = \"01001101\", \"0 1100011\" = \"00000000\", \"11001100\" = \"00100111\", \"11010000\" = \+ \"01100000\", \"01110110\" = \"00001111\", \"00111010\" = \"10100010\" , \"10100111\" = \"10001001\", \"01001111\" = \"10010010\", \"11000001 \" = \"11011101\", \"11110010\" = \"00000100\", \"10100010\" = \"00011 010\", \"01011000\" = \"01011110\", \"10110100\" = \"11000110\", \"011 00001\" = \"11011000\", \"01010111\" = \"11011010\", \"11101001\" = \" 11101011\", \"00011000\" = \"00110100\", \"01011010\" = \"01000110\", \+ \"11101000\" = \"11001000\", \"10101010\" = \"01100010\", \"00110100\" = \"00101000\", \"00010000\" = \"01111100\", \"01111110\" = \"1000101 0\", \"00100101\" = \"11000010\", \"11111011\" = \"01100011\", \"11100 001\" = \"11100000\", \"01101000\" = \"11110111\", \"11111010\" = \"00 010100\", \"10010001\" = \"10101100\", \"11000100\" = \"10001000\", \" 10001101\" = \"10110100\", \"00011001\" = \"10001110\", \"01011100\" = \"10100111\", \"01010010\" = \"01001000\", \"10011000\" = \"11100010 \", \"10100000\" = \"01000111\", \"01000000\" = \"01110010\", \"001110 11\" = \"01001001\", \"10001001\" = \"11110010\", \"01111010\" = \"101 11101\", \"01101111\" = \"00000110\", \"11111001\" = \"01101001\", \"0 0101111\" = \"01001110\", \"11101110\" = \"10011001\", \"11010101\" = \+ \"10110101\", \"11001010\" = \"00010000\", \"10100011\" = \"01110001\" , \"10101110\" = \"10111110\", \"01001011\" = \"11001100\", \"00011011 \" = \"01000100\", \"11101011\" = \"00111100\", \"10000111\" = \"11101 010\", \"11000011\" = \"00110011\", \"00101100\" = \"01000010\", \"100 10111\" = \"10000101\", \"01010110\" = \"10111001\", \"01110001\" = \" 00101100\", \"11011110\" = \"10011100\", \"00000011\" = \"11010101\", \+ \"10110000\" = \"11111100\", \"01110100\" = \"11001010\", \"11011011\" = \"10011111\", \"11000000\" = \"00011111\", \"10010110\" = \"0011010 1\", \"00001100\" = \"10000001\", \"00010011\" = \"10000010\", \"01011 101\" = \"10001101\", \"10001100\" = \"11110000\", \"00110101\" = \"11 011001\", \"00111000\" = \"01110110\", \"01000100\" = \"10000110\", \" 10010100\" = \"11100111\", \"11010111\" = \"00001101\", \"10110111\" = \"00100000\", \"00111100\" = \"01101101\", \"01000001\" = \"11111000 \", \"11111101\" = \"00100001\", \"00011101\" = \"11011110\", \"101010 00\" = \"01101111\", \"01011001\" = \"00010101\", \"01111001\" = \"101 01111\", \"11111111\" = \"01111101\", \"10110011\" = \"01001011\", \"0 1110000\" = \"11010000\", \"10111001\" = \"11011011\", \"00110001\" = \+ \"00101110\", \"01010001\" = \"01110000\", \"00011100\" = \"11000100\" , \"11000010\" = \"10101000\", \"11010100\" = \"00011001\", \"00010001 \" = \"11100011\", \"01110111\" = \"00000010\", \"11101101\" = \"01010 011\", \"11001101\" = \"10000000\", \"01100100\" = \"10001100\", \"110 00111\" = \"00110001\", \"00010110\" = \"11111111\", \"10000000\" = \" 00111010\", \"11100110\" = \"11110101\", \"10011001\" = \"11111001\", \+ \"00001001\" = \"01000000\", \"01000110\" = \"10011000\", \"11010001\" = \"01010001\", \"10011111\" = \"01101110\", \"00101101\" = \"1111101 0\", \"00001010\" = \"10100011\", \"11111100\" = \"01010101\", \"10111 100\" = \"01111000\", \"00100001\" = \"01111011\", \"10100100\" = \"00 011101\", \"11100010\" = \"00111011\", \"11011101\" = \"11001001\", \" 00110110\" = \"00100100\", \"00111101\" = \"10001011\", \"11001111\" = \"01011111\", \"10001110\" = \"11100110\", \"11010011\" = \"10101001 \", \"11100111\" = \"10110000\", \"00000101\" = \"00110110\", \"110100 10\" = \"01111111\", \"00011110\" = \"11101001\", \"01100111\" = \"000 01010\", \"10010101\" = \"10101101\", \"01001101\" = \"01100101\", \"0 1111111\" = \"01101011\", \"00110111\" = \"10110010\", \"01001000\" = \+ \"11010100\", \"01101110\" = \"01000101\", \"01011011\" = \"01010111\" ]):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}}{MARK "0 0 0" 0 }{VIEWOPTS 1 1 0 1 1 1803 1 1 1 1 }{PAGENUMBERS 0 1 2 33 1 1 }