{VERSION 4 0 "IBM INTEL LINUX22" "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 }{PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Title" 0 18 1 {CSTYLE "" -1 -1 "" 1 18 0 0 0 0 0 1 1 0 0 0 0 0 0 0 }3 0 0 -1 12 12 0 0 0 0 0 0 19 0 }} {SECT 0 {EXCHG {PARA 18 "" 0 "" {TEXT -1 17 "Rijndael-Test.mws" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "restart:" }}{PARA 0 "" 0 "" {TEXT -1 62 "Diese Definition wird ben\366tigt, damit Rijndael.m funkt ioniert:" }{MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 44 "F256 := GF( 2, 8, x^8 + x^4 + x^3 + x + 1 ):" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "read \"Rijndael.m\";" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 43 "So erzeugen Sie einen zuf\344lligen Schl\374ssel:" } {MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 34 "CipherKey := Ge nerateRandomKey( ):" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 86 "Intern sin d Schl\374ssel und auch Zust\344nde (\"State\") immer Arrays von Eleme nten aus F256:" }{MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "print(CipherKey);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 43 "Sch\366n er angucken kann man sie sich z.B. so:" }{MPLTEXT 1 0 0 "" }}{PARA 0 " > " 0 "" {MPLTEXT 1 0 83 "KeyToHex( CipherKey ); # bzw. KeyToBits( Cip herKey ); oder KeyToBytes( CipherKey );" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 58 "So verschl\374sseln Sie beliebige Zeichenketten mit Rijnd ael:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 75 "CipherOutput := RijndaelECB ( \"Das Rijndael-Seminar ist toll!\", CipherKey ):" }}{PARA 0 "" 0 "" {TEXT -1 157 "ECB steht dabei f\374r \"Electronic Codebook\". Es werde n auch Cipher Block Chaining (CBC), Cipher Feedback Mode (CFB) und Out put Feedback Mode (OFB) unterst\374tzt." }{MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 56 "Die Ausgabe von RijndaelECB ist eine List e von \"States\"." }{MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 31 "StateListToHex( CipherOutput );" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 46 "I_RijndaelECB liefert die Zeichenkette zur\374ck:" } {MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 41 "I_RijndaelECB( \+ CipherOutput, CipherKey );" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 35 "So \+ erhalten Sie Zwischenergebnisse:" }{MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "infolevel[all] := 4:" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 43 "Daf\374r setzen wir aber die Rundenzahl auf 2:" } {MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "Nr := 2:" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 34 "CipherKey := GenerateRandomK ey( ):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 59 "RijndaelCBC0( \"R ijndael.mws bietet auch CBC.\", CipherKey ):" }}}{EXCHG {PARA 0 "" 0 " " {TEXT -1 175 "So k\366nnen Sie die Blockl\344nge Nb und die Schl\374 ssell\344nge Nk (in Worten zu je 32 Bit) neu setzen. Die Rundenanzahl \+ Nr wird dann automatisch auf den vorgeschriebenen Wert gesetzt." } {MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "InitializeRijnd ael(8,6):" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 56 "Sie k\366nnen auch e inen Schl\374ssel in Hexadezimal eingeben:" }{MPLTEXT 1 0 1 " " }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 74 "CipherKey := HexToKey(\"FCF2A93E2BF A35A28C978008D35E3C373F627A835278CDCC\"):" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 40 "CipherInput := GenerateRandomMessage( ):" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 26 "StateToHex( CipherInput );" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 79 "Jetzt haben wir 14 Runden, also schalten wir lieber die Zwischenergebnisse aus:" }{MPLTEXT 1 0 0 "" } }{PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "infolevel[all] := 1:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 51 "CipherOutput := Rijndael( CipherInp ut, CipherKey ):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "StateTo Bits( State );" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 38 "I_Rijndae l( CipherOutput, CipherKey ):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "StateToHex( State );" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 178 "We nn Sie wollen, experimentieren Sie nun selbst mit Rijndael. Alle Zwisc henroutinen in Rijndael.mws k\366nnen sie auch von Hand ausf\374hren u nd sich leicht mit print anzeigen lassen: " }{MPLTEXT 1 0 0 "" }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "print(Rijndael);" }}}{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 }