Geheimnis-Box
Eine Geheimnis-Box soll entwickelt werden:
SecretBox |
---|
- key: Text - info: Text |
+SecretBox(k:Text, i:Text) +getInfo(k:Text):Text |
public class SecretBox{ private String key,info; // key und info sind nur innerhalb der Klasse zugreifbar public SecretBox(String k, String i){ // Konstruktor kann jeder aufrufen key = k; info = i; } public String getInfo(String k){ // get-Methode kann jeder aufrufen if (key.equals(k)) return info; // wenn key = k return "Falscher Schluessel"; } }
Ein SecretBox-Objekt hat einen Schlüssel-Text und die geheime Information. Nur wenn der Parameter k bei getInfo(k:Text) mit dem gespeicherten Schlüssel key übereinstimmt wird die Info zurück gegeben.
Implementieren und testen Sie die Klasse.
Caesar-Kryptographie
Um die Information zu schützen soll sie verschlüsselt werden mit der Caesar-Verschlüsselung.
Dabei wir die Information "abba" z.B. um drei Buchstaben verschoben zu "deed"
Entwickeln Sie die Hilfs-Operation vorbereiten(s:Text):Text die in Kleinbuchstagen umwandelt und Umlaute ersetzt als Code und als Struktogramm.
Entwickeln Sie die Hilfs-Operation -caesarCode(s:Text):Text die verschlüsselt (+3 Zeichen) als Code und Struktogramm.
Entwickeln Sie die Hilfs-Operation -caesarDeCode(s:Text):Text die den Text wieder entschlüsselt.
Vorgegebener Code
//https://de.wikipedia.org/wiki/Caesar-Verschlüsselung public class Caesar{ static String testNachricht="Wir müssen zu Fuß gehen"; static String testNachricht2="wir schreiben eine arbeit"; static String vorbereiten(String s){ int i; String aus=""; char c; s=s.toLowerCase(); // In Kleinbuchstaben umwandeln // Umlaute entfernen return aus; } static void test(){ String verschl,aus; System.out.println(vorbereiten(testNachricht)); verschl=caesarCode(testNachricht2,13); aus=caesarDeCode(verschl,13); System.out.println(verschl+" "+aus); } static String caesarCode(String s, int n){ int i; String aus =""; // um n verschieben return aus; } static String caesarDeCode(String s, int n){ int i; String aus =""; int c; // um n zurueckschieben return aus; } }
Quelltext
//https://de.wikipedia.org/wiki/Caesar-Verschlüsselung public class CaesarLsg{ static String testNachricht="Wir müssen zu Fuß gehen"; static String testNachricht2="wir schreiben eine arbeit"; static String vorbereiten(String s){ int i; String aus=""; char c; s=s.toLowerCase(); for(i=0;i<s.length();i++){ c=s.charAt(i); if(c>='a' && c<='z') aus+=c; else switch(c){ case 'ä': aus+="ae"; break; case 'ö': aus+="oe"; break; case 'ü': aus+="ue"; break; case 'ß': aus+="ss"; } } return aus; } static void test(){ String verschl,aus; System.out.println(vorbereiten(testNachricht)); verschl=caesarCode(testNachricht2,13); aus=caesarDeCode(verschl,13); System.out.println(verschl+" "+aus); } static String caesarCode(String s, int n){ int i; String aus =""; for(i=0;i<s.length();i++){ if(s.charAt(i)==' ')aus+=' '; else aus+= (char)((s.charAt(i)-'a'+n)%26+'a'); } return aus; } static String caesarDeCode(String s, int n){ int i; String aus =""; int c; for(i=0;i<s.length();i++){ if(s.charAt(i)==' ')aus+=' '; else{ c=s.charAt(i)-'a'-n; if(c<0)c+=26; aus+= (char)(c%26+'a'); } } return aus; } }
Struktogramm vorbereiten

Struktogramm caesarCode

Kryptographie mit Umordnung
Kryptographie mit Buch (One-Time-Pad)