Javakurs/Übungsaufgaben/Cäsar-Chiffre
Im Folgenden soll ein Programm weitgehend selbstständig entwickelt werden. Lies dir das nötige Wissen zur Cäsar-Chiffre in der Wikipedia an und überlege dir selbst eine Struktur für dein Programm.
Mache dir auch Gedanken darüber, wie du die einzelnen Teile deines Programms frühzeitig, am besten gleich beim Entwickeln, auch testen kannst.
Inhaltsverzeichnis
Aufgaben
Verschlüsseln
Erstelle ein Programm, das eine Variable mit Text enthält. Dein Programm soll diesen Text mit einem Pass'wort' durch eine Cäsar-Chiffre verschlüsseln, und dann auf der Konsole ausgeben.
Das geht auch komfortabler, ist aber dann mit ein wenig mehr Aufwand verbunden (Tipps siehe unten):
- Der Text soll aus einer Datei eingelesen werden.
- Der chiffrierte Text soll in einer neuen Datei gespeichert werden.
Entschlüsseln
Erweitere dein Programm so, dass es einen verschlüsselten Text bei gegebenem Passwort entschlüsseln kann. Speichere den entschlüsselten Text in einer separaten Datei.
Schlüssel knacken
Erweitere dein Programm so, dass es in der Lage ist, einen beliebigen mit einer Cäsar-Chiffre verschlüsselten Text zu entschlüsseln. Hierfür soll Häufigkeitsanalyse benutzt werden, das heißt das Passwort ist nicht bekannt. Gib auch das gefundene Passwort an.
Hinweis: Unsere Tutoren können dir bei allen auftretenden Javaproblemen helfen, wir können allerdings nicht garantieren, dass sie sich in ihrer Freizeit auch mit Kryptographie beschäftigen.
Weiterführendes
Wenn du willst, kannst du deinen Chiffrieralgorythmus auch verändern oder einen anderen implementieren, mache das im Link zu deinen damit verschlüsselten Texten aber auch kenntlich. Denke daran, dass du selbst in der Lage sein solltest, deine Texte bei gegebenem Passwort zu entschlüsseln ;)
Tipps
- Das Einlesen von Dateien gestaltet sich in Java etwas komplizierter. Wir haben euch aus diesem Grunde hier, ähnlich wie bei der Terminaleingabe, eine Bibliotheksklasse gebaut, die euch ein wenig Arbeit abnimmt.
- http://docs.freitagsrunde.org/Veranstaltungen/javakurs_2007/vorgaben/EasyFileAccess.java
- Mit Hilfe der Funktion
EasyFileAccess.getFileContent("Dateipfad")
könnt ihr so den Inhalt einer kompletten Datei zeilenweise in ein String-Array lesen. - Mit Hilfe der Funktion
EasyFileAccess.writeArrayToFile("Dateipfad", daten)
könnt ihr den Inhalt eines String-Arrays in eine Datei schreiben.
- Berücksichtigt, dass nur die Buchstaben oder Zahlen verschlüsselt werden sollen. Andere Zeichen (auch Umlaute) sollen erhalten bleiben.
- Valiablen vom Typ
char
können wie andere Zahlen-Datentypen miteinander verglichen werden, so liefert'a'<'b' true
. Aber auf Grund der Codierung (ASCII) der Zeichen ist'B'<'a'
.
Javakurs Gemeinschafts-Hacking
Trage einen von dir verschlüsselten Text mit mindestens 50 Zeichen hier im Wiki ein, und nenne dazu deinen Namen (Link: "bearbeiten"). Entschlüssele die Texte anderer Teilnehmer, die hier verlinkt sind.
Robert B. (rbu)
"EBG Guvegrra" vfg rvar qre rvasnpufgra Irefpuvrorpuvssera (Pnrfnepuvssera). Uvre jveq nyf Cnffjbeg qvr Mnuy Qervmrua trjnruyg, qnqhepu vfg qre Cebtenzzpbqr mhz Ragfpuyhrffrya tyrvpu qrz mhz Irefpuyhrffrya.
Jacob S.
"Qyhh xo xcwb ohx xyh Zychx eyhhmn, vluowbmn xo xyh Uomauha pih bohxyln Mwbfuwbnyh hcwbn to zoylwbnyh. Qyhh xo xcwb myfvmn eyhhmn, xiwb hcwbn xyh Zychx, qclmn xo zoyl dyxyh Mcya, xyh xo yllchamn, ychy Hcyxylfuay ylfycxyh. Qyhh xo qyxyl xyh Zychx hiwb xcwb myfvmn eyhhmn, qclmn xo ch dyxyl Mwbfuwbn ohnylfcyayh." - Mohtc (Xcy Eohmn xym Elcyaym)
Eric N.
"ylclunl pz h kpzo ilza zlyclk jvsk." -mhtvbz rspunvu wyvclyi
Thomas.T
"Zkork jkot Coyykt. Jgy oyz kot Ckm, Atyzkxhroinqkoz fa kxrgtmkt."-- Jgrgo Rgsg
Alex B.
Tgpg, kotk Näalomqkozygtgreyk sayy sgt tgzüxroin hko yu kotks vxosozobkt Grmuxoznsay cok xuz toinz hktazfkt. Kotk yosvrk HxazkLuxik-Skznujk qgtt tgzüxroin gain ckxcktjkz ckxjkt, atyinöt ghkx kotlginkx. Atj but kotks "Vgyycuxz" cüxj oin nokx gain toinz yvxkinkt
Kommentare
Wenn du Anmerkungen zur Aufgabe hast oder Lob und Kritik loswerden möchtest, ist hier die richtige Stelle dafür. Klicke einfach ganz rechts auf "bearbeiten" und schreibe deinen Kommentar direkt ins Wiki. Keine Scheu, es geht nichts kaputt ;)