Sitzung: Jeden Freitag in der Vorlesungszeit ab 16 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

Javakurs/Übungsaufgaben/Cäsar-Chiffre: Unterschied zwischen den Versionen

(Verschlüsseln / Entschlüsseln)
(Javakurs 2008 -- überarbeitet)
Zeile 1: Zeile 1:
Im Folgenden soll ein Programm weitgehend selbstständig entwickelt werden. Lies dir das nötige Wissen zur [[wikipedia:Caesar-Chiffre#Sicherheit|Cäsar-Chiffre]] im Web an und überlege dir selbst eine Struktur für dein Programm.
+
Im Folgenden soll ein Programm weitgehend selbstständig entwickelt werden. Lies dir das nötige Wissen zur [[wikipedia:Verschiebechiffre|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 frühzeitig testen kannst.
+
Mache dir auch Gedanken darüber, wie du die einzelnen Teile deines Programms frühzeitig, am besten gleich beim Entwickeln, auch testen kannst.
  
 +
== Aufgaben ==
  
#Erstelle ein Programm, das einen Text als Code im Programmtext enthält, mit einem Passwort durch eine Cäsar-Chiffre verschlüsselt und auf der Konsole ausgibt.
+
=== Verschlüsseln ===
  
Komfortabler, aber mit ein wenig Aufwand verbunden. Tipps siehe unten :
+
Erstelle ein Programm, das eine Variable mit Text enthält. Dein Programm soll diesen Text mit einem Passwort durch eine Cäsar-Chiffre verschlüsseln, und dann auf der Konsole ausgeben.
* der Text soll aus einer Datei eingelesen werden
 
* der chiffrierte Text soll in einer neuen Datei gespeichert werden.
 
  
#Erweitere dein Programm so, dass es einen mit der selben Chiffre verschlüsselten Text bei gegebendem Passwort entschlüsseln kann und in einer seperaten Datei speichert.
+
Das geht auch komfortabler, ist aber dann mit ein wenig mehr Aufwand verbunden (Tipps siehe unten):
#Erweitere dein Programm so, dass es in der Lage ist, einen beliebigen mit einer Cäsar-Chiffre verschlüsselten Text mit Hilfe von [[wikipedia:Häufigkeitsanalyse|Häufigkeitsanalyse]], ohne das Passwort zu kennen, zu entschlüsseln. Gib auch das gefundene Passwort an.
+
* 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 mit verschlüsselten Text bei gegebendem Passwort entschlüsseln kann. Speichere den entschlüsselten Text in einer seperaten 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 [[wikipedia:Häufigkeitsanalyse|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.
 
'''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.
  
=== Verschlüsseln / Entschlüsseln ===
+
=== Weiterführendes ===
#Trage einen von dir verschlüsselten Text mit min. 50 Zeichen hier im Wiki ein und verlinke ihn auf dieser Seite unter deinem Namen. Entschlüssle andere Texte, die hier verlinkt sind.
 
  
 
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 gegebendem Passwort zu entschlüsseln ;)
 
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 gegebendem Passwort zu entschlüsseln ;)
  
 
+
=== Tipps ===
'''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.
 
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.
Zeile 29: Zeile 32:
 
[http://docs.freitagsrunde.org/Veranstaltungen/javakurs_2007/vorgaben/EasyFileAccess.java http://docs.freitagsrunde.org/Veranstaltungen/javakurs_2007/vorgaben/EasyFileAccess.java]
 
[http://docs.freitagsrunde.org/Veranstaltungen/javakurs_2007/vorgaben/EasyFileAccess.java http://docs.freitagsrunde.org/Veranstaltungen/javakurs_2007/vorgaben/EasyFileAccess.java]
  
Mit Hilfe der Funktion <code>EasyFileAccess.getFileContent("Dateipfad")</code> könnt ihr so den Inhalt einer kompletten Datei in ein String-Array lesen.
+
Mit Hilfe der Funktion <code>EasyFileAccess.getFileContent("Dateipfad")</code> könnt ihr so den Inhalt einer kompletten Datei zeilenweise in ein String-Array lesen.
  
 
Mit Hilfe der Funktion <code>EasyFileAccess.writeArrayToFile("Dateipfad", daten)</code> könnt ihr den Inhalt eines String-Arrays in eine Datei schreiben.
 
Mit Hilfe der Funktion <code>EasyFileAccess.writeArrayToFile("Dateipfad", daten)</code> könnt ihr den Inhalt eines String-Arrays in eine Datei schreiben.
  
== 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 ;)
+
== 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.
  
 
<!--
 
<!--
 
Als kleine Starthilfe folgt ein Beispiel, wie so ein Kommentar formatiert sein könnte. Mit "Vorschau zeigen" kannst du dir ansehen, was deine Änderung bewirken würde, ohne wirklich etwas zu ändern.
 
Als kleine Starthilfe folgt ein Beispiel, wie so ein Kommentar formatiert sein könnte. Mit "Vorschau zeigen" kannst du dir ansehen, was deine Änderung bewirken würde, ohne wirklich etwas zu ändern.
 
Du musst übrigens außerhalb dieses auskommentieren Bereichs schreiben ;)
 
Du musst übrigens außerhalb dieses auskommentieren Bereichs schreiben ;)
 +
-->
  
==== Robert ====
+
==== Robert B. (rbu) ====
Na mal schauen, ob irgendjemand diese Funktion wirklich benutzt. Ich fände es jedenfalls toll.
+
"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.
-->
+
 
 +
 
 +
== 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 ;)

Version vom 7. April 2008, 00:30 Uhr

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.

Aufgaben

Verschlüsseln

Erstelle ein Programm, das eine Variable mit Text enthält. Dein Programm soll diesen Text mit einem Passwort 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 mit verschlüsselten Text bei gegebendem Passwort entschlüsseln kann. Speichere den entschlüsselten Text in einer seperaten 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 gegebendem 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.


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.


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 ;)