Hallo Zusammen,
ich habe eine kleine Programmiernuss zu knacken (Anfänger...). Anfänger Aufgaben "langweilen" mich schnell und ich verliere die Lust. Also bitte seht es mir nach, wenn die Aufgabe vllt für einen Anfänger nicht geeignet ist, ich sie mir jedoch trotzdem stelle.
Ich möchte gerne die Enigma nachprogrammieren. Jetzt nicht gleich Schnappatmung bekommen. Ich möchte nur die Walzen (in meiner Version) nachprogrammieren.
Wer "Enigma" nicht kennt, kann sich gerne hier informieren: https://de.wikipedia.org/wiki/Enigma_(Maschine)
Was ist gegeben:
Gegeben ist das Alphabet (A bis Z) sowie Zahlen (0 bis 9). Nichts anderes! Daraus wird dann der Normaltext zur Geheimsprache.
Wir gehen also davon aus, dass der Normaltext (Beispielsweise: "Passwort") nur aus Buchstaben und Zahlen besteht. Keine ASCII Zeichen, keine unterscheidung in Groß und Kleinbuchstaben.
Was ist die Aufgabe:
Der Normaltext "Passwort" soll nun über die Walze verschlüsselt werden. Hierbei soll sehr wohl in Klein- und Großbuchstaben sowie vorgebene ASCII Zeichen umgewandelt werden
Beispielsweise: "Passwort" wird zu "%Abb8=Rt"
$Zahlen = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
$Zeichen = ['!','"','§','$','%','&','/','(',')','=','?','[',']','.',',','-','+','@','#','*'];
$Buchstaben = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'];
Überlegungen:
Erstmal habe ich mir überlegt das ich ein zweidimensionales Array ("Rotor") erstelle. Das soll nur meine Übersetzungstabelle werden. So weiß ich welcher Buchstabe und welche Zahl wie übersetzt wurden.
Ich Speicher also an Position 0 in meiner ersten Dimension das A, in Position 1 das B, usw.
In meiner zweiten Dimension soll nun Random aus den vorgegebenen Zeichen gewählt und in die zweite Dimension gespeichert werden. Dabei ist darauf zu achten, dass das gewählte Zeichen nicht bereits verwendet wurde.
Also vereinfacht ausgedrückt:
Das Array "Rotor"
[0][A] => HIER DAS VERSCHLÜSSELTE ZEICHEN
[1][B] => HIER DAS VERSCHLÜSSELTE ZEICHEN
[2][C] => HIER DAS VERSCHLÜSSELTE ZEICHEN
[3][D] => HIER DAS VERSCHLÜSSELTE ZEICHEN
[4][E] => HIER DAS VERSCHLÜSSELTE ZEICHEN
[5][F] => HIER DAS VERSCHLÜSSELTE ZEICHEN
usw.
Ist meine Überlegung bis hierhin richtig?
Würdet ihr anders an die Sache gehen?
ich habe eine kleine Programmiernuss zu knacken (Anfänger...). Anfänger Aufgaben "langweilen" mich schnell und ich verliere die Lust. Also bitte seht es mir nach, wenn die Aufgabe vllt für einen Anfänger nicht geeignet ist, ich sie mir jedoch trotzdem stelle.
Ich möchte gerne die Enigma nachprogrammieren. Jetzt nicht gleich Schnappatmung bekommen. Ich möchte nur die Walzen (in meiner Version) nachprogrammieren.
Wer "Enigma" nicht kennt, kann sich gerne hier informieren: https://de.wikipedia.org/wiki/Enigma_(Maschine)
Was ist gegeben:
Gegeben ist das Alphabet (A bis Z) sowie Zahlen (0 bis 9). Nichts anderes! Daraus wird dann der Normaltext zur Geheimsprache.
Wir gehen also davon aus, dass der Normaltext (Beispielsweise: "Passwort") nur aus Buchstaben und Zahlen besteht. Keine ASCII Zeichen, keine unterscheidung in Groß und Kleinbuchstaben.
Was ist die Aufgabe:
Der Normaltext "Passwort" soll nun über die Walze verschlüsselt werden. Hierbei soll sehr wohl in Klein- und Großbuchstaben sowie vorgebene ASCII Zeichen umgewandelt werden
Beispielsweise: "Passwort" wird zu "%Abb8=Rt"
$Zahlen = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
$Zeichen = ['!','"','§','$','%','&','/','(',')','=','?','[',']','.',',','-','+','@','#','*'];
$Buchstaben = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'];
Überlegungen:
Erstmal habe ich mir überlegt das ich ein zweidimensionales Array ("Rotor") erstelle. Das soll nur meine Übersetzungstabelle werden. So weiß ich welcher Buchstabe und welche Zahl wie übersetzt wurden.
Ich Speicher also an Position 0 in meiner ersten Dimension das A, in Position 1 das B, usw.
In meiner zweiten Dimension soll nun Random aus den vorgegebenen Zeichen gewählt und in die zweite Dimension gespeichert werden. Dabei ist darauf zu achten, dass das gewählte Zeichen nicht bereits verwendet wurde.
Also vereinfacht ausgedrückt:
Das Array "Rotor"
[0][A] => HIER DAS VERSCHLÜSSELTE ZEICHEN
[1][B] => HIER DAS VERSCHLÜSSELTE ZEICHEN
[2][C] => HIER DAS VERSCHLÜSSELTE ZEICHEN
[3][D] => HIER DAS VERSCHLÜSSELTE ZEICHEN
[4][E] => HIER DAS VERSCHLÜSSELTE ZEICHEN
[5][F] => HIER DAS VERSCHLÜSSELTE ZEICHEN
usw.
Ist meine Überlegung bis hierhin richtig?
Würdet ihr anders an die Sache gehen?
Kommentar