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

(Cäsar: URL-Korrekturen)
(Javakurs Gemeinschafts-Hacking)
 
(26 dazwischenliegende Versionen von 15 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Javakurs2006| <- Zurück zur Übersicht]]
+
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 deines Programms frühzeitig, am besten gleich beim Entwickeln, auch testen kannst.
  
== Cäsar ==
+
== Aufgaben ==
  
Im folgenden soll ein Programm weitgehend selbsttändig entwickelt werden. Lese dir das nötige Wissen zur [http://de.wikipedia.org/wiki/Caesar-Chiffre#Sicherheit Cäsar-Chiffre] im Web an und überlegt dir selbst eine Struktur für dein Programm.
+
=== Verschlüsseln ===
  
Macht dir auch Geanken darüber wie du die einzelnden Teile frühzeitig testen kannst.
+
Erstelle ein Programm, das eine Variable mit Text enthält. Dein Programm soll diesen Text mit einem Passwort (hier einer Zahl) 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.
  
#Erstelle ein Programm das einen Text aus einer Datei einliest, mit einem Passwort durch eine [http://de.wikipedia.org/wiki/Caesar-Chiffre#Sicherheit Cäsar-Chiffre] verschlüsselt und in einer neuen Datei (z.B. mit anderer Änderung) speichert.
+
=== Entschlüsseln ===
#* Für mehr Komfort, aber nicht notwendig: Sowohl der Dateiname als auch das Passwort sollen über die Console eingegeben werden können.
 
#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.
 
#Erweitere dein Programm so, dass es in der Lage ist einen beliebigen mit einer [http://de.wikipedia.org/wiki/Caesar-Chiffre#Sicherheit Cäsar-Chiffre] verschlüsselten Text mit Hilfe von [http://de.wikipedia.org/wiki/H%C3%A4ufigkeitsanalyse Häufigkeitsanalyse] ohne das Passwort zu kennen zu entschlüsseln. Gib auch das gefundene Passwort an.
 
  
 +
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 [[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 das 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 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 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 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.
  
[[Javakurs2006| <- Zurück zur Übersicht]]
+
* Berücksichtigt, dass nur die Buchstaben oder Zahlen verschlüsselt werden sollen. Andere Zeichen (auch Umlaute) sollen erhalten bleiben.
 +
 
 +
* Variablen vom Typ <code>char</code> können wie andere Zahlen-Datentypen miteinander verglichen werden, so liefert <code>'a'<'b' true</code>. Aber auf Grund der Codierung ([http://de.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange ASCII]) der Zeichen ist <code>'B'<'a'</code>.
 +
 
 +
== 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.
 +
Du musst übrigens außerhalb dieses auskommentieren Bereichs schreiben ;)
 +
-->
 +
 
 +
==== 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
 +
 
 +
=== Toby T. ===
 +
Gentr rvara iba qve irefpuyüffrygra Grkg zvg zvaqrfgraf 05 Mrvpura uvre vz Jvxv rva, haq araar qnmh qrvara Anzra (Yvax: "orneorvgra"). Ragfpuyüffryr qvr Grkgr naqrere Grvyaruzre, qvr uvre ireyvaxg fvaq.
 +
 
 +
=== Marcel R. ===
 +
Hpaixbqdrrp: uüg 65 Etghdctc ( 6,2 zv Zpaqhhrwcxiota, 855v gdwtg Hrwxcztc, 85 Hpaqtxqaptiitg, Hpui oltxtg Oxigdctc, 955ba Ltxßltxc, Qjiitg) Sxt Hrwcxiota eutuutgc jcs pju ytstb txct Hrwtxqt Hrwxcztc jcs txc Hpaqtxqapii qtuthixvtc. Sxt Qjiitg hrwbtaotc aphhtc, sxt Hrwcxiota atxrwi hpaotc jcs txct Bxcijit egd Htxit pcqgpitc. Stg Eupcct tcictwbtc jcs stc Ltxc jcs Oxigdctchpui oj stg Hdßt vtqtc. Atxrwi zdtrwtac aphhtc. Zpait Qjiitguadrztc bxi stb Hrwcttqthtc jcitggjtwgtc. Sxt Hrwcxiota xc stg Hdßt cdrwbpah tglptgbtc.
 +
 
 +
'''Berni F.:''' Rkl*oxnvsmr*nso}o*Kpqklo*looxno~8*Wosx*Z|yq|kww*}mr~*x|*xkmr*no|*rkopsquos~*no}*,o,8*Wkmr~*??k|*xymr*Porvo|*klo|*o}*vkop~*D3*Z]D*No|*Tk?k*U|}*s}~*omr~*xo*myyvo*]kmro8*WPQ*Lo|xs
 +
 
 +
=== Jacob B. ===
 +
Hier mal etwas schwierigeres. Der zugehörige Klartext aus dem Buch "Anton Voyls Fortgang" (Quelle: http://www.uibk.ac.at/literaturhaus/material/pdf/Innlesebuch_02-10.pdf) enthält keine 'e's:
 +
 
 +
’U Dpagivsk, kvjo thu mhuk khz nhy upjoa zv dpagpn, nvß ht Avy Zhpua-Thyapu Uhwhst hbz, dvyhbm Whupr hbziyhjo. Hbjo pu Sfvu dhyz zjosptt, Avk rht kvya Ahn buk Uhjoa kbyjo Zrvyiba, Afwobz buk Kbyjomhss. Hbz Isökzpuu, kh’z zvuza upjoa Nybuk uvjo Tvapc nhi, zjosvß Htathuu Chcpu, pt Rvwm upjoa nhug kpjoa, Ihyz, Ipzayvz, Rpuvz buk Khujpunz.

Aktuelle Version vom 15. März 2012, 13:49 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 (hier einer Zahl) 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.
  • Berücksichtigt, dass nur die Buchstaben oder Zahlen verschlüsselt werden sollen. Andere Zeichen (auch Umlaute) sollen erhalten bleiben.
  • Variablen 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

Toby T.

Gentr rvara iba qve irefpuyüffrygra Grkg zvg zvaqrfgraf 05 Mrvpura uvre vz Jvxv rva, haq araar qnmh qrvara Anzra (Yvax: "orneorvgra"). Ragfpuyüffryr qvr Grkgr naqrere Grvyaruzre, qvr uvre ireyvaxg fvaq.

Marcel R.

Hpaixbqdrrp: uüg 65 Etghdctc ( 6,2 zv Zpaqhhrwcxiota, 855v gdwtg Hrwxcztc, 85 Hpaqtxqaptiitg, Hpui oltxtg Oxigdctc, 955ba Ltxßltxc, Qjiitg) Sxt Hrwcxiota eutuutgc jcs pju ytstb txct Hrwtxqt Hrwxcztc jcs txc Hpaqtxqapii qtuthixvtc. Sxt Qjiitg hrwbtaotc aphhtc, sxt Hrwcxiota atxrwi hpaotc jcs txct Bxcijit egd Htxit pcqgpitc. Stg Eupcct tcictwbtc jcs stc Ltxc jcs Oxigdctchpui oj stg Hdßt vtqtc. Atxrwi zdtrwtac aphhtc. Zpait Qjiitguadrztc bxi stb Hrwcttqthtc jcitggjtwgtc. Sxt Hrwcxiota xc stg Hdßt cdrwbpah tglptgbtc.

Berni F.: Rkl*oxnvsmr*nso}o*K?pqklo*looxno~8*Wosx*Z|yq|kww*}?mr~*x?|*xkmr*no|*rkopsquos~*no}*,o,8*Wkmr~*??k|*xymr*Porvo|*klo|*o}*vkop~*D3*Z]D*No|*Tk?k*U?|}*s}~*omr~*xo*myyvo*]kmro8*WPQ*Lo|xs

Jacob B.

Hier mal etwas schwierigeres. Der zugehörige Klartext aus dem Buch "Anton Voyls Fortgang" (Quelle: http://www.uibk.ac.at/literaturhaus/material/pdf/Innlesebuch_02-10.pdf) enthält keine 'e's:

’U Dpagivsk, kvjo thu mhuk khz nhy upjoa zv dpagpn, nvß ht Avy Zhpua-Thyapu Uhwhst hbz, dvyhbm Whupr hbziyhjo. Hbjo pu Sfvu dhyz zjosptt, Avk rht kvya Ahn buk Uhjoa kbyjo Zrvyiba, Afwobz buk Kbyjomhss. Hbz Isökzpuu, kh’z zvuza upjoa Nybuk uvjo Tvapc nhi, zjosvß Htathuu Chcpu, pt Rvwm upjoa nhug kpjoa, Ihyz, Ipzayvz, Rpuvz buk Khujpunz.