Python: Wie kann ich eine Verschlüsselung mit Schlüsselwörter erstellen?
Moin.
Ich bin in einem Informatikkurs und wir sollen eine Verschlüsselung mit Schlüsselwörtern erstellen. Leider komme ich dort nicht zu gut klar und wollte einmal fragen, ob mir da jemand helfen könnte?
Danke im Voraus!
Wenn du eine konkrete Frage dazu stellen würdest (z.B. was du versuchst und woran du konkret scheiterst), könnte man dir sicherlich irgendwie helfen.
Naja, ich soll halt einen Code erstellen, der eine Verschlüsselung von Wörtern beinhaltet. Diese Verschlüsselung soll dann auch noch durch Schlüssel Wörter „Verschlüsselt“ werden.
2 Antworten
Ein einfaches Verfahren könnte so aussehen:
Du hast ein Wort (z.B. Kartoffelbrei) und dazu einen Schlüssel (z.B. Regenbogen). Den Schlüssel verwendest du, um die einzelnen Zeichen des Worts zu verschieben.
Erst wird jedem Buchstaben des Wortes der zugehörige Buchstabe des Schlüssels zugeordnet. Wenn der Schlüssel kürzer ist, als das Wort (wie in diesem Fall), wiederholt er sich einfach.
K a r t o f f e l b r e i
R e g e n b o g e n R e g
Folgend wird Buchstabe für Buchstabe konvertiert. R ist der 18. Buchstabe im Alphabet, K wird nun um 18 Buchstaben verschoben.
K + R = C
11 + 18 = 29 % 26 = 3
Dieses Verfahren wiederholst du bei den übrigen Buchstaben.
a + e = f
1 + 5 = 6 % 26 = 6
usw. ...
Um mit Buchstaben rechnen zu können, musst du eigentlich nur wissen, dass einzelne Zeichen in vielen Programmiersprachen leicht zu Zahlen konvertiert werden können und andersherum.
Beispiel mit Java:
char letter = (char)97; // 'a'
int number = (int)'a'; // 97
Des Weiteren wäre die ASCII-Tabelle für so eine Aufgabe von Interesse. In dieser kannst du auch nachschlagen, wieso ein kleines a die Zahl 97 ergibt. Um sie auf 0-25 zu normalisieren, reicht eine leichte Rechnung:
(97 - 97) % 26 = 0 // 'a'
(98 - 97) % 26 = 1 // 'b'
Alles Weitere überlasse ich dir.
Die einfachste polyalphabetische Verschlüsselung ist die Vigenere-Tafel. Danach die XOR-one time pad Verschlüsselung. Bitte separat googeln, da die Infos sehr umfangreich sind. Dann noch eine einfach Möglichkeit mit + und -.
codiertes_Zeichen=uncodiertes_Zeichen + Code zeichen
Falls dann eine Zahl größer als 255 raus kommt dann
if (codiertes_Zeichen> 255) codiertes_Zeichen = codiertes_Zeichen - 255;
Beim Entschlüsseln:
if (codiertes_Zeichen < 0) codiertes_Zeichen = codiertes_Zeichen + 255;