# Caesar-Verschluesselungssystem # (es werden nur globale Variablen verwendet) # Arno Pasternak, 1.7.2009/2.12.2009 # ************************* Prozeduren *************** proc warten_auf_enter {} { puts "" puts "Weiter: " gets stdin weiter puts "" } proc info_ausgeben {} { puts "Mit diesem Progamm kann die Verschluesselung" puts "nach Caesar einzeln oder in einer Gruppe " puts "ausprobiert werden." puts "" puts "Zu Beginn wird eine Zahl als Adresse erfragt." puts "Wird die Nummer beispielsweise mit 100 eingegeben," puts "heisst der Computer dann 'R100'" puts "Es koennen nun Kurzmitteilungen" puts "(1 Zeile Information) eingegeben werden." puts "Diese kann (mit einem zuvor eingegeben" puts "Versatz) verschluesselt werden," puts "gespeichert und geladen werden." puts "Als Dateinamen werden immer die Kombinationen:" puts "'RzieladresseRquelladresse.SMS'" puts "verwendet." puts "Es koennen nur die Dateien geladen werden," puts "die mit dem eigenen Computernamen beginnen." puts "Solche Dateien koennen auch geloescht werden." puts "(Der Pfad fuer die Dateien kann im Programm" puts "festgelegt (veraendert) werden." puts "Bei einer Arbeit von Gruppen muss dies " puts "natuerlich ein gemeinsam erreichbarer sein.)" warten_auf_enter } proc satz_eingabe {} { global satz puts "" puts "Bitte den gewuenschten Satz eingeben:" gets stdin satz puts "" satz_ausgabe } proc satz_ausgabe {} { global satz puts "" puts "------------------------------------------------" puts "Der aktuelle Satz lautet: $satz" puts "------------------------------------------------" puts "" } proc satz_verschluesseln {} { caesar_verschluesseln satz_ausgabe } proc satz_entschluesseln {} { caesar_entschluesseln satz_ausgabe } proc satz_laden {} { global satz adresse pfad puts "" puts "Eine SMS von welcher Adresse soll gelesen werden?" gets stdin quelladresse set file [open "$pfad/R${adresse}R$quelladresse.SMS" {RDONLY}] gets $file satz close $file puts "" satz_ausgabe } proc satz_speichern {} { global satz adresse pfad puts "" puts "An welche Zieladresse soll gesendet werden?" gets stdin zieladresse set file [open "$pfad/R${zieladresse}R$adresse.SMS" {WRONLY CREAT}] puts $file $satz close $file } proc versatz_eingeben {} { global versatz puts "" puts "Bitte Versatz eingeben:" gets stdin versatz puts "" } proc SMS_verzeichnis_ausgeben {} { global adresse global pfad set aktueller_pfad [pwd] cd $pfad puts "" puts "Folgende SMS liegen vor:" puts [glob -nocomplain *.SMS] puts "" puts "Folgende SMS liegen fuer mich vor: " puts [glob -nocomplain R$adresse*.SMS] puts "" puts "" cd $aktueller_pfad } proc SMS_loeschen {} { global adresse pfad puts "Von welcher Adresse soll die SMS geloescht werden?" gets stdin quelladresse file delete $pfad/R${adresse}R$quelladresse.SMS puts "" } proc caesar_verschluesseln {} { global satz versatz set stelle 0 set verschluesselter_satz "" set laenge [string length $satz] while {$stelle < $laenge} { set zeichen [string index $satz $stelle] scan $zeichen %c asciizahl set asciizahl [expr $asciizahl + $versatz] set zeichen [format %c $asciizahl] set verschluesselter_satz $verschluesselter_satz$zeichen set stelle [expr $stelle +1] } set satz $verschluesselter_satz } proc caesar_entschluesseln {} { global satz versatz set stelle 0 set entschluesselter_satz "" set laenge [string length $satz] while {$stelle < $laenge} { set zeichen [string index $satz $stelle] scan $zeichen %c asciizahl set asciizahl [expr $asciizahl - $versatz] set zeichen [format %c $asciizahl] set entschluesselter_satz $entschluesselter_satz$zeichen set stelle [expr $stelle +1] } set satz $entschluesselter_satz } # ************************* Ende der Prozeduren *************** puts \n\n\n\n set pfad "server" puts "CAESAR-Verschluesselungssystem" puts "" info_ausgeben puts "" puts "Eigene Adresse (z.B. 312 für R312) eingeben:" gets stdin adresse puts "" puts "" # set versatz 0 (Zeile ist auskommentiert, damit eine fehlende Eingabe "bemerkt" wird.) set satz "" set wahl -1 while {$wahl != 0} { puts "===========================" puts " Client: R$adresse" puts "===========================" puts " Menue" puts "===========================" puts "" puts "Informationen ausgeben: i" puts "" puts "Satz eingeben: 1" puts "Satz ausgeben: 2" puts "Satz laden : 3" puts "Satz speichern: 4" puts "Satz verschluesseln: 5" puts "Satz entschluesseln: 6" puts "SMS Verzeichnis ausgeben: 7" puts "Versatz eingeben: 8" puts "SMS loeschen: 9" puts "Ende: 0" puts "" puts "" puts "Eingabe:" gets stdin wahl puts "" if {$wahl == "i"} then {info_ausgeben} if {$wahl == 1} then {satz_eingabe} if {$wahl == 2} then {satz_ausgabe} if {$wahl == 3} then {satz_laden} if {$wahl == 4} then {satz_speichern} if {$wahl == 5} then {satz_verschluesseln} if {$wahl == 6} then {satz_entschluesseln} if {$wahl == 7} then {SMS_verzeichnis_ausgeben} if {$wahl == 8} then {versatz_eingeben} if {$wahl == 9} then {SMS_loeschen} } # ************************* Ende des Verschlüsselungprogrammes ***************