{VERSION 3 0 "Linux" "3.0" } {USTYLETAB {PSTYLE "Heading 4" -1 20 1 {CSTYLE "" -1 -1 "Times" 1 10 0 0 0 1 1 1 2 2 2 2 1 0 0 1 }1 1 0 0 0 0 2 0 2 0 2 2 -1 1 }{PSTYLE "Or dered List 5" -1 200 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 0 0 1 }1 1 0 0 3 3 2 144 2 0 2 2 -1 1 }{PSTYLE "Ordered List 1" -1 201 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 0 0 1 }1 1 0 0 3 3 2 0 2 0 2 2 -1 1 }{PSTYLE "Text Output" -1 2 1 {CSTYLE "" -1 -1 "Courier" 1 10 0 0 255 1 2 2 2 2 2 1 1 0 0 1 }1 1 0 0 0 0 2 0 2 0 2 2 -1 1 }{PSTYLE "Bullet Item" -1 15 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 0 0 1 }1 1 0 0 3 3 2 0 2 0 2 2 -1 1 }{PSTYLE "Le ft Justified Maple Output" -1 12 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 0 0 1 }1 1 0 0 0 0 2 0 2 0 2 2 -1 1 }{PSTYLE "Help" -1 10 1 {CSTYLE "" -1 -1 "Courier" 1 9 0 0 255 1 2 2 2 2 2 1 1 0 0 1 } 1 1 0 0 0 0 2 0 2 0 2 2 -1 1 }{PSTYLE "Author" -1 19 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 0 0 1 }3 1 0 0 8 8 2 0 2 0 2 2 -1 1 }{PSTYLE "Diagnostic" -1 9 1 {CSTYLE "" -1 -1 "Courier" 1 10 64 128 64 1 2 2 2 2 2 1 1 0 0 1 }1 1 0 0 0 0 2 0 2 0 2 2 -1 1 }{PSTYLE "H eading 2" -1 4 1 {CSTYLE "" -1 -1 "Times" 1 14 0 0 0 1 2 1 2 2 2 2 1 0 0 1 }1 1 0 0 8 2 2 0 2 0 2 2 -1 1 }{PSTYLE "Ordered List 3" -1 202 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 0 0 1 }1 1 0 0 3 3 2 72 2 0 2 2 -1 1 }{PSTYLE "Maple Plot" -1 13 1 {CSTYLE "" -1 -1 "Tim es" 1 12 0 0 0 1 2 2 2 2 2 2 1 0 0 1 }3 1 0 0 0 0 2 0 2 0 2 2 -1 1 } {PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 0 0 1 }1 1 0 0 0 0 2 0 2 0 2 2 -1 1 }{PSTYLE "Annotation Title" -1 203 1 {CSTYLE "" -1 -1 "Times" 1 18 0 0 0 1 2 1 2 2 2 2 1 0 0 1 }3 1 0 0 12 12 2 0 2 0 2 2 -1 1 }{PSTYLE "Dash Item" -1 16 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 0 0 1 }1 1 0 0 3 3 2 0 2 0 2 2 -1 1 }{PSTYLE "Heading 3" -1 5 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 1 1 2 2 2 2 1 0 0 1 }1 1 0 0 0 0 2 0 2 0 2 2 -1 1 }{PSTYLE "Ordered List 4" -1 204 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 0 0 1 }1 1 0 0 3 3 2 108 2 0 2 2 -1 1 }{PSTYLE "Maple Output" -1 11 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 0 0 1 }3 1 0 0 0 0 2 0 2 0 2 2 -1 1 }{PSTYLE "List Item" -1 14 1 {CSTYLE "" -1 -1 "Times " 1 12 0 0 0 1 2 2 2 2 2 2 1 0 0 1 }1 1 0 0 3 3 2 0 2 0 2 2 -1 1 } {PSTYLE "Line Printed Output" -1 6 1 {CSTYLE "" -1 -1 "Courier" 1 10 0 0 255 1 2 2 2 2 2 1 1 0 0 1 }1 1 0 0 0 0 2 0 2 0 2 2 -1 1 }{PSTYLE "F ixed Width" -1 17 1 {CSTYLE "" -1 -1 "Courier" 1 10 0 0 0 1 2 2 2 2 2 2 1 0 0 1 }3 1 0 0 0 0 2 0 2 0 2 2 -1 1 }{PSTYLE "Warning" -1 7 1 {CSTYLE "" -1 -1 "Courier" 1 10 0 0 255 1 2 2 2 2 2 1 1 0 0 1 }1 1 0 0 0 0 2 0 2 0 2 2 -1 1 }{PSTYLE "Error" -1 8 1 {CSTYLE "" -1 -1 "Courie r" 1 10 255 0 255 1 2 2 2 2 2 1 1 0 0 1 }1 1 0 0 0 0 2 0 2 0 2 2 -1 1 }{PSTYLE "Heading 1" -1 3 1 {CSTYLE "" -1 -1 "Times" 1 18 0 0 0 1 2 1 2 2 2 2 1 0 0 1 }1 1 0 0 8 4 2 0 2 0 2 2 -1 1 }{PSTYLE "Title" -1 18 1 {CSTYLE "" -1 -1 "Times" 1 18 0 0 0 1 2 1 1 2 2 2 1 0 0 1 }3 1 0 0 12 12 2 0 2 0 2 2 -1 1 }{PSTYLE "Ordered List 2" -1 205 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 0 0 1 }1 1 0 0 3 3 2 36 2 0 2 2 -1 1 }{CSTYLE "Help Variable" -1 25 "Courier" 1 12 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "Text" -1 200 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "Help Bold" -1 39 "Times" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "Page Number" -1 33 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "2D Math Italic Small" -1 201 "Times" 1 1 0 0 0 1 1 2 2 2 2 2 0 0 0 1 }{CSTYLE "Help Nonterminal" -1 24 "Courier" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "Default" -1 38 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "Maple Comment" -1 21 "Courier" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "Maple Input" -1 0 "Courier" 1 12 255 0 0 1 2 1 2 2 1 2 0 0 0 1 }{CSTYLE "2D Math Small" -1 7 "Times" 1 1 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "2D Inert Output" -1 202 "Times" 1 12 144 144 144 1 2 2 2 2 1 2 0 0 0 1 }{CSTYLE "Help Fixed" -1 23 "Courier" 1 10 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "Popup" -1 31 "Times" 1 12 0 128 128 1 1 2 1 2 2 2 0 0 0 1 }{CSTYLE "Plot Title" -1 27 "Times" 1 10 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "2D Input" -1 19 "Times" 1 12 255 0 0 1 2 2 2 2 1 2 0 0 0 1 }{CSTYLE "Copyright" -1 34 "Times" 1 10 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "Maple Input Placeholder" -1 203 "Courier" 1 12 200 0 200 1 2 1 2 2 1 2 0 0 0 1 }{CSTYLE "2D Math Bold \+ Small" -1 10 "Times" 1 1 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "2D Math " -1 2 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "Annotation T ext" -1 204 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "Help No tes" -1 37 "Times" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "Help Und erlined Bold" -1 41 "Times" 1 12 0 0 0 1 1 1 2 2 2 2 0 0 0 1 }{CSTYLE "Hyperlink" -1 17 "Times" 1 12 0 128 128 1 2 2 1 2 2 2 0 0 0 1 } {CSTYLE "2D Math Symbol 2" -1 16 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "Equation Label" -1 205 "Times" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "Plot Text" -1 28 "Times" 1 8 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "2D Math Italic Small201" -1 206 "Times" 1 1 0 0 0 1 1 2 2 2 2 2 0 0 0 1 }{CSTYLE "Help Italic" -1 42 "Times" 1 12 0 0 0 1 1 2 2 2 2 2 0 0 0 1 }{CSTYLE "Help Heading" -1 26 "Times" 1 14 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "Output Labels" -1 29 "Times" 1 8 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "Help Normal" -1 30 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "2D Comment" -1 18 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "Help Maple Name" -1 35 "Times" 1 12 104 64 92 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "2D Output" -1 20 "Times" 1 12 0 0 255 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "Dictionary Hyperlink" -1 45 "Times " 1 12 147 0 15 1 2 2 1 2 2 2 0 0 0 1 }{CSTYLE "Help Emphasized" -1 22 "Times" 1 12 0 0 0 1 1 2 2 2 2 2 0 0 0 1 }{CSTYLE "Help Italic Bold" -1 40 "Times" 1 12 0 0 0 1 1 2 2 2 2 2 0 0 0 1 }{CSTYLE "LaTeX" -1 32 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "Help Menus" -1 36 " Times" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "Prompt" -1 1 "Courie r" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "Help Underlined" -1 44 " Times" 1 12 0 0 0 1 2 2 1 2 2 2 0 0 0 1 }{CSTYLE "Help Underlined Ital ic" -1 43 "Times" 1 12 0 0 0 1 1 2 1 2 2 2 0 0 0 1 }{CSTYLE "2D Math B old" -1 5 "Times" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "2D Math I talic" -1 3 "Times" 1 12 0 0 0 1 1 2 2 2 2 2 0 0 0 1 }} {SECT 0 {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "restart: 2^64;" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 6 "2^64!;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "evalf(GAMMA(2^64+1));" }}}{EXCHG {PARA 0 "> " 0 "" {TEXT 207 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 12 "evalf (2^72);" }}}{EXCHG {PARA 0 "> " 0 "" {TEXT 207 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "evalf(8*0.3*log[2](26));" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 7 "64 - %;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 38 "IP := [58, 50, 42, 34, 26, 18, 10, 2,\n" }{MPLTEXT 1 0 38 " 60, 52, 44, 36, 28, 20, 12, 4,\n" }{MPLTEXT 1 0 38 " \+ 62, 54, 46, 38, 30, 22, 14, 6,\n" }{MPLTEXT 1 0 38 " 64, 56, 4 8, 40, 32, 24, 16, 8,\n" }{MPLTEXT 1 0 38 " 57, 49, 41, 33, 25, \+ 17, 9, 1,\n" }{MPLTEXT 1 0 38 " 59, 51, 43, 35, 27, 19, 11, 3, \n" }{MPLTEXT 1 0 38 " 61, 53, 45, 37, 29, 21, 13, 5,\n" } {MPLTEXT 1 0 39 " 63, 55, 47, 39, 31, 23, 15, 7]:\n" }{MPLTEXT 1 0 61 "S[1]:=[14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7,\n " }{MPLTEXT 1 0 61 " 0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9 , 5, 3, 8,\n" }{MPLTEXT 1 0 61 " 4, 1, 14, 8, 13, 6, 2, 11, 15, \+ 12, 9, 7, 3, 10, 5, 0,\n" }{MPLTEXT 1 0 61 " 15, 12, 8, 2, 4, 9, \+ 1, 7, 5, 11, 3, 14, 10, 0, 6, 13]:\n" }{MPLTEXT 1 0 61 "S[2]:=[15, 1, \+ 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10,\n" }{MPLTEXT 1 0 61 " \+ 3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5,\n" } {MPLTEXT 1 0 61 " 0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15,\n" }{MPLTEXT 1 0 61 " 13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7 , 12, 0, 5, 14, 9]:\n" }{MPLTEXT 1 0 60 "S[3]:=[10,0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8,\n" }{MPLTEXT 1 0 61 " 13, 7, 0, 9 , 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1,\n" }{MPLTEXT 1 0 61 " \+ 13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7,\n" }{MPLTEXT 1 0 61 " 1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12]:\n" }{MPLTEXT 1 0 61 "S[4]:=[7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12 , 4, 15,\n" }{MPLTEXT 1 0 60 " 13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2 , 12, 1, 10, 14, 9,\n" }{MPLTEXT 1 0 60 " 10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4,\n" }{MPLTEXT 1 0 61 " 3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14]:\n" }{MPLTEXT 1 0 61 "S[5]:= [2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9,\n" }{MPLTEXT 1 0 60 " 14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6,\n" } {MPLTEXT 1 0 60 " 4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, \+ 0, 14,\n" }{MPLTEXT 1 0 61 " 11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0 , 9, 10, 4, 5, 3]:\n" }{MPLTEXT 1 0 61 "S[6]:=[12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11,\n" }{MPLTEXT 1 0 60 " 10, 15, 4, 2 , 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8,\n" }{MPLTEXT 1 0 60 " 9 , 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6,\n" }{MPLTEXT 1 0 61 " 4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13]:\n" } {MPLTEXT 1 0 61 "S[7]:=[4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10 , 6, 1,\n" }{MPLTEXT 1 0 60 " 13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5 , 12, 2, 15, 8, 6,\n" }{MPLTEXT 1 0 60 " 1, 4, 11, 13, 12, 3, 7, \+ 14, 10, 15, 6, 8, 0, 5, 9, 2,\n" }{MPLTEXT 1 0 61 " 6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12]:\n" }{MPLTEXT 1 0 61 "S[8]:=[ 13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7,\n" }{MPLTEXT 1 0 60 " 1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2,\n" } {MPLTEXT 1 0 60 " 7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8,\n" }{MPLTEXT 1 0 61 " 2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9 , 0, 3, 5, 6, 11]:\n" }{MPLTEXT 1 0 17 "kl := proc(a, b)\n" }{MPLTEXT 1 0 19 "evalb(a[2] < b[2])\n" }{MPLTEXT 1 0 5 "end:\n" }{MPLTEXT 1 0 56 "IPi := [seq(sort([seq([i, IP[i]], i=1..64)], kl)[j][1],\n" } {MPLTEXT 1 0 13 "j = 1..64)]:\n" }{MPLTEXT 1 0 37 "P := [16, 7, 20, 21 , 29, 12, 28, 17,\n" }{MPLTEXT 1 0 37 " 1, 15, 23, 26, 5, 18, 31 , 10,\n" }{MPLTEXT 1 0 35 " 2, 8, 24, 14, 32, 27, 3, 9,\n" } {MPLTEXT 1 0 37 " 19, 13, 30, 6, 22, 11, 4, 25]:\n" }{MPLTEXT 1 0 43 "E := [32, 1, 2, 3, 4, 5, 4, 5, 6, 7, 8, 9,\n" }{MPLTEXT 1 0 52 " 8, 9, 10, 11, 12, 13, 12, 13, 14, 15, 16, 17,\n" }{MPLTEXT 1 0 54 " 16, 17, 18, 19, 20, 21, 20, 21, 22, 23, 24, 25,\n" }{MPLTEXT 1 0 54 " 24, 25, 26, 27, 28, 29, 28, 29, 30, 31, 32, 1]:\n" } {MPLTEXT 1 0 61 "SH1 := [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26,18,\n" }{MPLTEXT 1 0 61 " 10, 2, 59, 51, 43, 35, 27, 19, 11, \+ 3, 60, 52, 44, 36]:\n" }{MPLTEXT 1 0 61 "SH2 := [63, 55, 47, 39, 31, 2 3, 15, 7, 62, 54, 46, 38,30,22,\n" }{MPLTEXT 1 0 61 " 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4]:\n" }{MPLTEXT 1 0 55 "V := \+ [1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1]:\n" }{MPLTEXT 1 0 52 "RSF := [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10,\n" }{MPLTEXT 1 0 51 " 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2,\n" }{MPLTEXT 1 0 55 " 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48,\n" } {MPLTEXT 1 0 55 " 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32 ]:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "box := proc(i, x)\n" }{MPLTEXT 1 0 10 "global S;\n" }{MPLTEXT 1 0 15 "local j, z, b;\n" } {MPLTEXT 1 0 34 "z := S[i][1+x[1]*2^5 + x[6] * 2^4\n" }{MPLTEXT 1 0 37 " + sum(x[j]*2^(5-j), j = 2..5)];\n" }{MPLTEXT 1 0 18 "b := arr ay(1..4);\n" }{MPLTEXT 1 0 27 "for j from 4 to 1 by -1 do\n" }{MPLTEXT 1 0 35 "b[j] := z mod 2; z := (z - b[j])/2\n" }{MPLTEXT 1 0 4 "od;\n" }{MPLTEXT 1 0 17 "convert(b, list)\n" }{MPLTEXT 1 0 4 "end:" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 31 "DES := proc(Block, Schluesse l)\n" }{MPLTEXT 1 0 49 "global IP, IPi, S, P, E, SH1, SH2, RSF, V, dok u;\n" }{MPLTEXT 1 0 45 "# doku = 0: Nur das Ergebnis wird ausgegeben\n " }{MPLTEXT 1 0 80 "# doku = 1: Zus\357\277\275½tzlich werden Ein gabeblock und Schl\357\277\275½ssel ausgegeben\n" }{MPLTEXT 1 0 72 "# doku = 2: Eine Datenstruktur bestehend aus den Rundenergebnissen wird\n" }{MPLTEXT 1 0 22 "# zur\357\277\275½ckgegeben\n" } {MPLTEXT 1 0 45 "# doku = 3: Der Rechengang wird dokumentiert\n" } {MPLTEXT 1 0 67 "local Runde, Bit, Verschiebung, TS1, TS2, RS, RS0, Ru ndenergebnis,\n" }{MPLTEXT 1 0 15 "x, y, w, i, j;\n" }{MPLTEXT 1 0 39 "Rundenergebnis := array(0..16, 1..64);\n" }{MPLTEXT 1 0 19 "Verschieb ung := 0;\n" }{MPLTEXT 1 0 15 "for i to 64 do\n" }{MPLTEXT 1 0 33 "Run denergebnis[0, i] := Block[i]\n" }{MPLTEXT 1 0 4 "od;\n" }{MPLTEXT 1 0 17 "if doku > 0 then\n" }{MPLTEXT 1 0 53 "printf(cat(\"Zu verschl\35 7\277\275sselnder Block:\\n\", \"%1d\"$32,\n" }{MPLTEXT 1 0 47 "\" \", \"%1d\"$32, \"\\n\"), seq(Block[i], i=1..64));\n" }{MPLTEXT 1 0 37 "p rintf(cat(\"Schl\357\277\275ssel:\\n\", \"%1d\"$32,\n" }{MPLTEXT 1 0 52 "\" \", \"%1d\"$32, \"\\n\"), seq(Schluessel[i], i=1..64));\n" } {MPLTEXT 1 0 4 "fi;\n" }{MPLTEXT 1 0 15 "for i to 28 do\n" }{MPLTEXT 1 0 30 "TS1[i] := Schluessel[SH1[i]];\n" }{MPLTEXT 1 0 29 "TS2[i] := S chluessel[SH2[i]]\n" }{MPLTEXT 1 0 4 "od;\n" }{MPLTEXT 1 0 17 "if doku > 2 then\n" }{MPLTEXT 1 0 65 "printf(cat(\"Teilschl\357\277\275ssel \+ \", \"%1d\"$28, \" und \", \"%1d\"$28, \"\\n\"),\n" }{MPLTEXT 1 0 45 " seq(TS1[i], i=1..28), seq(TS2[i], i=1..28));\n" }{MPLTEXT 1 0 4 "fi;\n " }{MPLTEXT 1 0 15 "for i to 64 do\n" }{MPLTEXT 1 0 22 "x[i] := Block[ IP[i]];\n" }{MPLTEXT 1 0 4 "od;\n" }{MPLTEXT 1 0 17 "if doku > 2 then \n" }{MPLTEXT 1 0 60 "printf(cat(\"Anfangspermutation macht Block zu \\n\", \"%1d\"$32,\n" }{MPLTEXT 1 0 43 "\" \", \"%1d\"$32, \"\\n\"), s eq(x[i], i=1..64));\n" }{MPLTEXT 1 0 4 "fi;\n" }{MPLTEXT 1 0 19 "for R unde to 16 do\n" }{MPLTEXT 1 0 41 "Verschiebung := Verschiebung + V[Ru nde];\n" }{MPLTEXT 1 0 15 "for i to 28 do\n" }{MPLTEXT 1 0 55 "RS0[i] \+ := TS1[1 + ((i + Verschiebung - 1) mod 28)];\n" }{MPLTEXT 1 0 55 "R S0[28+i] := TS2[1 + ((i + Verschiebung - 1) mod 28)];\n" }{MPLTEXT 1 0 4 "od;\n" }{MPLTEXT 1 0 17 "if doku > 2 then\n" }{MPLTEXT 1 0 64 "pr intf(cat(\"Runde %1d: Teilschl\357\277\275ssel sind \", \"%1d\"$28, \" und \",\n" }{MPLTEXT 1 0 72 "\"%1d\"$28, \"\\n\"), Runde, seq(RS0[i], i=1..28), seq(RS0[28+i], i=1..28));\n" }{MPLTEXT 1 0 4 "fi;\n" } {MPLTEXT 1 0 15 "for i to 48 do\n" }{MPLTEXT 1 0 43 "w[i] := (x[E[i]+3 2] + RS0[RSF[i]]) mod 2; \n" }{MPLTEXT 1 0 4 "od;\n" }{MPLTEXT 1 0 17 "if doku > 2 then\n" }{MPLTEXT 1 0 55 "printf(cat(\"Rundenschl\357\277 \275ssel ist \", \"%1d\"$48, \"\\n\"),\n" }{MPLTEXT 1 0 28 "seq(RS0 [RSF[i]], i=1..48));\n" }{MPLTEXT 1 0 55 "printf(cat(\"aufgebl\357\277 \275hter Halbblock \", \"%1d\"$48, \"\\n\"),\n" }{MPLTEXT 1 0 27 "seq( x[E[i]+32], i=1..48));\n" }{MPLTEXT 1 0 55 "printf(cat(\"XOR dieser be iden \", \"%1d\"$48, \"\\n\"),\n" }{MPLTEXT 1 0 21 "seq(w[i], i=1 ..48));\n" }{MPLTEXT 1 0 4 "fi;\n" }{MPLTEXT 1 0 13 "y := op([]);\n" } {MPLTEXT 1 0 14 "for i to 8 do\n" }{MPLTEXT 1 0 48 "y := y, op(box(i, \+ [seq(w[6*(i-1)+j], j=1..6)]))\n" }{MPLTEXT 1 0 4 "od;\n" }{MPLTEXT 1 0 10 "y := [y];\n" }{MPLTEXT 1 0 17 "if doku > 2 then\n" }{MPLTEXT 1 0 64 "printf(cat(\"Die S-Boxen machen daraus \", \"%1d\"$32, \" \\n\"),\n" }{MPLTEXT 1 0 21 "seq(y[i], i=1..32));\n" }{MPLTEXT 1 0 64 "printf(cat(\"Dies wird permutiert zu \", \"%1d\"$32, \"\\n\") ,\n" }{MPLTEXT 1 0 24 "seq(y[P[i]], i=1..32));\n" }{MPLTEXT 1 0 4 "fi; \n" }{MPLTEXT 1 0 19 "if Runde < 16 then\n" }{MPLTEXT 1 0 22 "for i fr om 1 to 32 do\n" }{MPLTEXT 1 0 31 "Bit := (y[P[i]] + x[i]) mod 2;\n" } {MPLTEXT 1 0 17 "x[i] := x[32+i];\n" }{MPLTEXT 1 0 18 "x[32 + i] := Bi t \n" }{MPLTEXT 1 0 4 "od;\n" }{MPLTEXT 1 0 15 "for j to 64 do\n" } {MPLTEXT 1 0 33 "Rundenergebnis[Runde, j] := x[j]\n" }{MPLTEXT 1 0 4 " od;\n" }{MPLTEXT 1 0 17 "if doku > 2 then\n" }{MPLTEXT 1 0 64 "printf( cat(\"XOR mit dem linken Halbblock \", \"%1d\"$32, \"\\n\"),\n" } {MPLTEXT 1 0 24 "seq(x[32+i], i=1..32));\n" }{MPLTEXT 1 0 69 "printf(c at(\"Insgesamt wurde der Block transformiert zu\\n\", \"%1d\"$32,\n" } {MPLTEXT 1 0 44 "\" \", \"%1d\"$32, \"\\n\\n\"), seq(x[i], i=1..64))\n " }{MPLTEXT 1 0 3 "fi\n" }{MPLTEXT 1 0 5 "else\n" }{MPLTEXT 1 0 22 "fo r i from 1 to 32 do\n" }{MPLTEXT 1 0 32 "x[i] := (y[P[i]] + x[i]) mod \+ 2;\n" }{MPLTEXT 1 0 31 "Rundenergebnis[16, i] := x[i]:\n" }{MPLTEXT 1 0 4 "od;\n" }{MPLTEXT 1 0 23 "for i from 33 to 64 do\n" }{MPLTEXT 1 0 30 "Rundenergebnis[16, i] := x[i]\n" }{MPLTEXT 1 0 4 "od;\n" }{MPLTEXT 1 0 17 "if doku > 2 then\n" }{MPLTEXT 1 0 64 "printf(cat(\"XOR mit de m linken Halbblock \", \"%1d\"$32, \"\\n\"),\n" }{MPLTEXT 1 0 21 "s eq(x[i], i=1..32));\n" }{MPLTEXT 1 0 126 "printf(cat(\"Da in der letzt en Runde keine Rechts-Links-Vertauschung stattfindet, entsteht\\n\", \+ \"%1d\"$32, \" \", \"%1d\"$32, \"\\n\"),\n" }{MPLTEXT 1 0 21 "seq(x[i] , i=1..64));\n" }{MPLTEXT 1 0 4 "fi;\n" }{MPLTEXT 1 0 4 "fi;\n" } {MPLTEXT 1 0 4 "od;\n" }{MPLTEXT 1 0 19 "y := array(1..64);\n" } {MPLTEXT 1 0 15 "for i to 64 do\n" }{MPLTEXT 1 0 18 "y[i] := x[IPi[i]] \n" }{MPLTEXT 1 0 4 "od;\n" }{MPLTEXT 1 0 18 "convert(y, list);\n" } {MPLTEXT 1 0 17 "if doku > 2 then\n" }{MPLTEXT 1 0 75 "printf(cat(\"Di e Inverse der Anfangspermutation liefert das Endergebnis\\n\",\n" } {MPLTEXT 1 0 52 "\"%1d\"$32, \" \", \"%1d\"$32, \"\\n\"), seq(y[i], i= 1..64))\n" }{MPLTEXT 1 0 5 "else\n" }{MPLTEXT 1 0 17 "if doku > 0 then \n" }{MPLTEXT 1 0 29 "printf(\"Das Ergebnis ist\\n\")\n" }{MPLTEXT 1 0 4 "fi;\n" }{MPLTEXT 1 0 63 "printf(cat(\"%1d\"$32, \" \", \"%1d\"$32 , \"\\n\"), seq(y[i], i=1..64))\n" }{MPLTEXT 1 0 4 "fi;\n" }{MPLTEXT 1 0 43 "if doku = 2 then evalm(Rundenergebnis) fi;\n" }{MPLTEXT 1 0 4 "end:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "Zufallsbit := rand (2):" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 28 "Zufallsschluessel := proc() \n" }{MPLTEXT 1 0 39 "local i, j, paritaet, bit, schluessel;\n" } {MPLTEXT 1 0 22 "schluessel := op([]);\n" }{MPLTEXT 1 0 14 "for i to 8 do\n" }{MPLTEXT 1 0 15 "paritaet := 0;\n" }{MPLTEXT 1 0 14 "for j to \+ 7 do\n" }{MPLTEXT 1 0 21 "bit := Zufallsbit();\n" }{MPLTEXT 1 0 31 "sc hluessel := schluessel, bit;\n" }{MPLTEXT 1 0 36 "paritaet := (paritae t + bit) mod 2;\n" }{MPLTEXT 1 0 4 "od;\n" }{MPLTEXT 1 0 35 "schluesse l := schluessel, paritaet\n" }{MPLTEXT 1 0 4 "od;\n" }{MPLTEXT 1 0 13 "[schluessel]\n" }{MPLTEXT 1 0 4 "end:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "Zufallsblock := proc()\n" }{MPLTEXT 1 0 9 "local i;\n" } {MPLTEXT 1 0 29 "[seq(Zufallsbit(), i=1..64)]\n" }{MPLTEXT 1 0 5 "end: \n" }{MPLTEXT 1 0 21 "zeige := proc(Block)\n" }{MPLTEXT 1 0 9 "local i ;\n" }{MPLTEXT 1 0 68 "printf(cat(\"%1d\"$32, \" \", \"%1d\"$32, \"\\n \"), seq(Block[i], i=1..64)):\n" }{MPLTEXT 1 0 5 "end:\n" }{MPLTEXT 1 0 10 "doku := 0:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 53 "Schlues sel := Zufallsschluessel(): zeige(Schluessel):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 38 "Block := Zufallsblock(): zeige(Block):" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "DES(Block, Schluessel);" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "doku := 3:\n" }{MPLTEXT 1 0 23 "DES(Block, Schluessel);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "doku := 2:\n" }{MPLTEXT 1 0 31 "erg1 := DES(Block, Schluessel);" } }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "Block2 := Block:\n" } {MPLTEXT 1 0 29 "Block2[33] := 1 - Block[33]:\n" }{MPLTEXT 1 0 32 "erg 2 := DES(Block2, Schluessel);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 33 "Unterschiede := proc(erg1, erg2)\n" }{MPLTEXT 1 0 28 "local i, j , s, Unterschied;\n" }{MPLTEXT 1 0 23 "Unterschied := op([]):\n" } {MPLTEXT 1 0 22 "for i from 0 to 16 do\n" }{MPLTEXT 1 0 8 "s := 0:\n" }{MPLTEXT 1 0 15 "for j to 64 do\n" }{MPLTEXT 1 0 48 "if erg1[i, j] <> erg2[i,j] then s := s+1 fi od;\n" }{MPLTEXT 1 0 30 "Unterschied := Un terschied, s\n" }{MPLTEXT 1 0 4 "od:\n" }{MPLTEXT 1 0 13 "Unterschied; \n" }{MPLTEXT 1 0 5 "end:\n" }{MPLTEXT 1 0 25 "Unterschiede(erg1, erg2 );" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "Schluessel2 := Schlue ssel:\n" }{MPLTEXT 1 0 40 "Schluessel2[41] := 1 - Schluessel2[41]:\n" }{MPLTEXT 1 0 32 "erg2 := DES(Block, Schluessel2);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 25 "Unterschiede(erg1, erg2);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {XPPEDIT 19 1 "" "%#%?G" }}}} {MARK "0 0 0" 0 }{VIEWOPTS 1 1 0 1 1 1803 1 1 1 1 }{PAGENUMBERS 0 1 2 33 1 1 }