#! /usr/bin/ruby # PROGRAM SMS2 # Version fuer das faible-Projekt # Version: 20.5.2024 # Autor: Arno Pasternak # Das Programm unterliegt der GPL, Version 3 # ========================================== class SatzKlasse # attr_accessor :satz def initialize @satz = "Dies ist ein neuer Satz" # puts @satz end def einlesen print "Bitte Satz eingeben: " @satz = gets.chomp puts @satz end def ausgeben puts @satz end def verschluesseln(codewort) buchstabe = "" codebuchstabe = "" asciizahl = 0 codeasciizahl = 0 codestelle = 0 verschluesselter_satz = "" stelle = 0 codestelle = 0 while stelle < @satz.length do buchstabe = @satz[stelle] codebuchstabe = codewort[codestelle] asciizahl = buchstabe.ord codeasciizahl = codebuchstabe.ord asciizahl = asciizahl + codeasciizahl - 64 buchstabe = asciizahl.chr verschluesselter_satz = verschluesselter_satz + buchstabe stelle = stelle + 1 codestelle = codestelle + 1 if codestelle == codewort.length then codestelle = 0 end end @satz = verschluesselter_satz end def entschluesseln(codewort) buchstabe = "" codebuchstabe = "" asciizahl = 0 codeasciizahl = 0 codestelle = 0 entschluesselter_satz = "" stelle = 0 while stelle < @satz.length do buchstabe = @satz[stelle] codebuchstabe = codewort[codestelle] asciizahl = buchstabe.ord codeasciizahl = codebuchstabe.ord asciizahl = asciizahl - codeasciizahl + 64 buchstabe = asciizahl.chr entschluesselter_satz = entschluesselter_satz + buchstabe stelle = stelle + 1 codestelle = codestelle + 1 if codestelle == codewort.length then codestelle = 0 end end @satz = entschluesselter_satz end def senden(dateiname) datei = File.new(dateiname, "w") datei.write(@satz) datei.close() end def holen(dateiname) # dateiabfrage = File.new(dateiname) # if !dateiabfrage.exists? if !File.exist?(dateiname) @satz = "SMS nicht vorhanden" else datei = File.new(dateiname) @satz = datei.readline datei.close() end end end # Ende Satzklasse # ========================================================= # BEGINN des Programms puts "" puts "==============================================================" puts " SMS Programm mit Vigenere-Verschlüsselung" puts "==============================================================" puts "==============================================================" puts "" puts "" sms = nil codewort = nil teilnehmer = nil absender = nil empfaenger = nil wahl = nil codewort = 0.chr puts "" print "Bitte gib Deinen Namen an: " teilnehmer = gets.chomp #teilnehmer = gets.chomp("Bitte gib Deinen Namen an: ") sms = SatzKlasse.new wahl = "" while wahl != "Q" puts "" puts "==============================================================" puts "E: Einlesen ** A: Ausgeben" puts "S: Senden ** H: Holen" puts "V: Verschlüsseln ** D: Entschlüsseln" puts "Z: Zeigen alle SMS ** C: Codewort eingeben" puts "Q: QUIT" puts "" print "Bitte wählen: " wahl = gets.chomp # wahl = gets.chomp("Bitte wählen: ") wahl.upcase! puts "" puts "--------------------------------------------------------------" if wahl == 'Z' puts `./verzeichnis.sh` end if wahl == 'C' print "Bitte Codewort eingeben: " codewort = $stdin.gets.chomp end if wahl == 'E' sms.einlesen end if wahl == 'A' sms.ausgeben end if wahl == 'S' print "Bitte Empfänger eingeben: " empfaenger = $stdin.gets.chomp sms.senden("#{empfaenger}_#{teilnehmer}.sms") puts "Die SMS wurde versandt." end if wahl == 'H' print "Bitte Absender eingeben: " # absender = $stdin.gets.chomp absender = gets.chomp sms.holen("#{teilnehmer}_#{absender}.sms") puts "Folgende SMS wurde erhalten:" sms.ausgeben end if wahl == 'V' sms.verschluesseln(codewort) print "Verschlüsselt: " sms.ausgeben end if wahl == 'D' sms.entschluesseln(codewort) print "Entschlüsselt: " sms.ausgeben end end # ENDE des Programmes