Caesar Verschlüsselung/ceasar cipher in R
Verfasst: Do Sep 21, 2017 11:05 pm
Hallo zusammen. Ich sitze vor einer Aufgabe und komme einfach nicht weiter.
###
Die Aufgabe lautet:
Die Wissenschaft der Kryptologie beschaftigt sich mit der Ver- und Entschlusselung von Informationen.
Die Caesar-Verschlusselung ist eine Methode, die zu den einfachen Substitutionsverfahren zahlt1. Dabei
wird ein Alphabet von Klartextbuchstaben abgebildet in ein Alphabet von Geheimtextbuchstaben. Diese
Abbildung erfolgt zyklisch durch eine Verschiebung um k Positionen nach links. Betrachtet man zum
Beispiel das Alphabet der Kleinbuchstaben, dann ergibt sich mit k = 3 folgende (zyklische) Verschiebung:
Klartext a b c d . . . x y z
Geheimtext d e f g . . . a b c
Aus dem Wort "klartext" wird in Geheimschrift dann das Wort "noduwhaw".
a) Schreiben Sie eine Funktion encrypt(), die einen Klartext mit der Caesar-Verschlusselung chiriert.
Die Grundstruktur der Funktion soll folgendermaen aussehen:
encrypt <- function(text, verschiebung){
...
...
...
}
Das Argument text dient zur Ubergabe des Klartextes, das Argument verschiebung gibt die Anzahl
der Positionen an, um die ein Alphabet rotiert werden soll.
Ruckgabe der Funktion ist eine Liste mit folgenden Elementen:
Den originalen Klartext,
den verschlusselten Geheimtext,
die Verschiebung, die zur Verschlusselung verwendet wurde.
Die Funktion soll auerdem folgende Spezikationen erfullen:
Entgegen obigem Beispiel sind die zu verschusselnden Zeichen nicht nur Kleinbuchstaben,
sondern (in dieser Reihenfolge!) Grobuchstaben, Kleinbuchstaben, Leerzeichen und die
Satzzeichen "Punkt", "Komma", "Ausrufezeichen" und "Fragezeichen".
Die Funktion soll keine Umlaute berucksichtigen.
Die Elemente des Outputs sollen sinnvoll bezeichnet werden.
Der Output der Funktion soll von der Objektklasse encrypt sein.
###
Was ich bisher habe:
encrypt <- function(text, verschiebung)
{intToUtf8(utf8ToInt(text) + verschiebung)}
text <- "Hallo"
text
verschiebung <- 3
verschiebung
chifrtext <- encrypt(text, verschiebung)
chifrtext
###
Das funktioniert auch ganz gut, nur leider ist dabei die bestimmte Reihenfolge nicht berücksichtigt (Großbuchstaben, Kleinbuchstaben, Leerzeichen, Punkt, Komma, Ausrufezeichen, Fragezeichen).
Meine Frage nun: Hat jemand eine Idee wie man das unter bringt?
Wäre um schnelle Antwort sehr dankbar!
LG
###
Die Aufgabe lautet:
Die Wissenschaft der Kryptologie beschaftigt sich mit der Ver- und Entschlusselung von Informationen.
Die Caesar-Verschlusselung ist eine Methode, die zu den einfachen Substitutionsverfahren zahlt1. Dabei
wird ein Alphabet von Klartextbuchstaben abgebildet in ein Alphabet von Geheimtextbuchstaben. Diese
Abbildung erfolgt zyklisch durch eine Verschiebung um k Positionen nach links. Betrachtet man zum
Beispiel das Alphabet der Kleinbuchstaben, dann ergibt sich mit k = 3 folgende (zyklische) Verschiebung:
Klartext a b c d . . . x y z
Geheimtext d e f g . . . a b c
Aus dem Wort "klartext" wird in Geheimschrift dann das Wort "noduwhaw".
a) Schreiben Sie eine Funktion encrypt(), die einen Klartext mit der Caesar-Verschlusselung chiriert.
Die Grundstruktur der Funktion soll folgendermaen aussehen:
encrypt <- function(text, verschiebung){
...
...
...
}
Das Argument text dient zur Ubergabe des Klartextes, das Argument verschiebung gibt die Anzahl
der Positionen an, um die ein Alphabet rotiert werden soll.
Ruckgabe der Funktion ist eine Liste mit folgenden Elementen:
Den originalen Klartext,
den verschlusselten Geheimtext,
die Verschiebung, die zur Verschlusselung verwendet wurde.
Die Funktion soll auerdem folgende Spezikationen erfullen:
Entgegen obigem Beispiel sind die zu verschusselnden Zeichen nicht nur Kleinbuchstaben,
sondern (in dieser Reihenfolge!) Grobuchstaben, Kleinbuchstaben, Leerzeichen und die
Satzzeichen "Punkt", "Komma", "Ausrufezeichen" und "Fragezeichen".
Die Funktion soll keine Umlaute berucksichtigen.
Die Elemente des Outputs sollen sinnvoll bezeichnet werden.
Der Output der Funktion soll von der Objektklasse encrypt sein.
###
Was ich bisher habe:
encrypt <- function(text, verschiebung)
{intToUtf8(utf8ToInt(text) + verschiebung)}
text <- "Hallo"
text
verschiebung <- 3
verschiebung
chifrtext <- encrypt(text, verschiebung)
chifrtext
###
Das funktioniert auch ganz gut, nur leider ist dabei die bestimmte Reihenfolge nicht berücksichtigt (Großbuchstaben, Kleinbuchstaben, Leerzeichen, Punkt, Komma, Ausrufezeichen, Fragezeichen).
Meine Frage nun: Hat jemand eine Idee wie man das unter bringt?
Wäre um schnelle Antwort sehr dankbar!
LG