{VERSION 5 0 "IBM INTEL LINUX" "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 }{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 " " {MPLTEXT 1 0 36 "libname := \"/tmp/Rijndael\", libname:" }}}{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 "Cip herKey := GenerateRandomKey( ):" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 86 "Intern sind Schl\374ssel und auch Zust\344nde (\"State\") immer Ar rays von Elementen aus F256:" }{MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "print(CipherKey);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 43 "Sch\366ner angucken kann man sie sich z.B. so:" }{MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 83 "KeyToHex( CipherKey ); # bzw . KeyToBits( CipherKey ); oder KeyToBytes( CipherKey );" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 58 "So verschl\374sseln Sie beliebige Zeichen ketten mit Rijndael:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 75 "CipherOutpu t := RijndaelECB( \"Das Rijndael-Seminar ist toll!\", CipherKey ):" }} {PARA 0 "" 0 "" {TEXT -1 157 "ECB steht dabei f\374r \"Electronic Code book\". Es werden auch Cipher Block Chaining (CBC), Cipher Feedback Mo de (CFB) und Output Feedback Mode (OFB) unterst\374tzt." }{MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 56 "Die Ausgabe von Rijndael ECB ist eine Liste 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 zu r\374ck:" }{MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 41 "I_Ri jndaelECB( 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 a uf 2:" }{MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "Nr := 2: " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 34 "CipherKey := GenerateRa ndomKey( ):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 75 "CipherOutput := RijndaelCBC0( \"Rijndael.mws bietet auch CBC.\", CipherKey ):" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 42 "I_RijndaelCBC0( CipherOutput , CipherKey ):" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 175 "So k\366nnen S ie die Blockl\344nge Nb und die Schl\374ssell\344nge Nk (in Worten zu \+ je 32 Bit) neu setzen. Die Rundenanzahl Nr wird dann automatisch auf d en vorgeschriebenen Wert gesetzt." }{MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "InitializeRijndael(8,6):" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 56 "Sie k\366nnen auch einen Schl\374ssel in Hexadezimal eingeben:" }{MPLTEXT 1 0 1 " " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 74 "C ipherKey := HexToKey(\"FCF2A93E2BFA35A28C978008D35E3C373F627A835278CDC C\"):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 40 "CipherInput := Gen erateRandomMessage( ):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 26 "S tateToHex( CipherInput );" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 79 "Jetz t haben wir 14 Runden, also schalten wir lieber die Zwischenergebnisse aus:" }{MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "infolev el[all] := 1:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 51 "CipherOutp ut := Rijndael( CipherInput, CipherKey ):" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 21 "StateToBits( State );" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 38 "I_Rijndael( CipherOutput, CipherKey ):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "StateToHex( State );" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 178 "Wenn Sie wollen, experimentieren Sie nun selbst mit Rijndael. Alle Zwischenroutinen in Rijndael.mws k\366nnen \+ sie auch von Hand ausf\374hren und sich leicht mit print anzeigen lass en: " }{MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "print(Ri jndael);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 33 "CipherKey := Ge nerateRandomKey():" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 91 "Ciphe rOutput := RijndaelCBC( \"Eine Verschl\374sselung mit Cipher Block Cha ining\", CipherKey ):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 31 "St ateListToHex( CipherOutput );" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 41 "I_RijndaelCBC( CipherOutput, CipherKey );" }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 0 "" }}}}{MARK "0 0 0" 15 }{VIEWOPTS 1 1 0 1 1 1803 1 1 1 1 }{PAGENUMBERS 0 1 2 33 1 1 }