Weiter zum Inhalt

C) Cäsar Verschlüsselung

Die Cäsar Verschlüsselung ist eine der simpelsten Möglichkeiten einen Text zu verschlüsseln. Dabei wird ein Buchstabe um X Stellen verschoben. Setzt man für X beispielsweise die drei, wird z. B. aus dem a ein D, aus b ein E und aus z ein C. Üblicherweise besteht die unverschlüsselte Nachricht nur aus Kleinbuchstaben und die verschlüsselte Geheimschrift aus Großbuchstaben. Sie werden in diesem Kapitel aber auch eine erweiterte Möglichkeit vorgestellt bekommen.

Einfache Cäsar Verschlüsselung

Um diese Verschlüsselung in Java zu implementieren legen Sie sich zuerst eine neue Klasse an.

public class Caesar {

}

Diese Klasse erhält die private Variable switchIt, welche speichert, um wie viele Stellen die Buchstaben verschoben werden sollen. Wir bieten den User zum Setzen dieser Variablen Setter- und Getter-Methoden sowie die optionale Übergabe im Konstruktor an. Wird switchIt nicht im Konstruktor übergeben, setzen Sie den Wert auf “3″. Natürlich darf auch die Methode mit dem eigentlichen Algorithmus nicht fehlen. Diese hat als Parameter einen String (den unverschlüsselten Text) und als Rückgabewert ebenfalls einen String (den verschlüsselten Text).

public class Caesar {

  private int switchIt = -1;

  public Caesar() {
    this(3);
  }

  public Caesar(int switchIt) {
    setSwitchIt(switchIt);
  }

  public int getSwitchIt() {
    return this.switchIt;
  }

  public void setSwitchIt(int switchIt) {
    this.switchIt = switchIt;
  }

  public String encrypt(String text) {
    return null;
  }
}

Widmen wir uns jetzt der encrypt-Methode. Sie wissen, dass Sie in Java Buchstaben in Zahlenwerte umwandeln können. Mithilfe einer ASCII-Tabelle erkennen Sie, dass alle Buchstaben hintereinander liegen. Es bietet sich also an den unverschlüsselten Text Zeichen für Zeichen durchzugehen und alle klein geschriebenen Buchstaben um X Stellen zu versetzen.

Die kleinen Buchstaben a-z verbergen sich hinter den ASCII-Zeichen 97-122.

public String encrypt(String text) {

  StringBuffer encrypted = new StringBuffer();
  for (int i = 0; i < text.length(); i++) {
    char cur = text.charAt(i);
    if (cur > 96 &amp;&amp; cur < 123) { // Kleiner Buchstabe
      cur += getSwitchIt();
      encrypted.append(cur);
    }
  }
  return encrypted.toString().toUpperCase();
}

Jetzt können Sie unsere Klasse auch testen. Erstellen Sie sich hierzu eine weitere Klasse mit einer Main-Methode, welche ein neues Objekt der Klasse Caesar erstellt und durch selbige einen String verschlüsseln lässt.

Natürlich sticht bald ins Auge, dass die letzten Buchstaben im Alphabet (je nach Wert von switchIt) nicht richtig verschlüsselt werden. Um dies zu umgehen überprüfen wir, ob das aktuelle Zeichen + die Variable switchIt einen höheren ASCII-Wert ergeben, als der von “z”. Trifft dies zu, ziehen wir vom aktuellen Ergebnis 26 ab (für die 26 Buchstaben im Alphabet).

public String encrypt(String text) {

  StringBuffer encrypted = new StringBuffer();
  for (int i = 0; i < text.length(); i++) {
    char cur = text.charAt(i);
    if (cur > 96 &amp;&amp; cur < 123) {
      cur += getSwitchIt();
      if (cur > 'z') {
        cur -= 26;
      }
      encrypted.append(cur);
    }
  }
  return encrypted.toString().toUpperCase();
}

Mehr brauchen Sie nicht für eine einfache Cäsar Verschlüsselung.

Lesen Sie auf der nächsten Seite, wie Sie diese Verschlüsselung noch erweitern können.


{ 5 } Comments

  1. leon | 25. Januar 2010 um 15:38 | Permalink

    ich kann das alles nicht ich bin dumm und will nach hause

  2. Amelie | 25. Januar 2010 um 15:40 | Permalink

    wer erklärt mir das bitte in einfach?
    ich versteh nichts!!!!!!! :(

  3. Stefan Kiesel | 25. Januar 2010 um 15:48 | Permalink

    OK, das ist zweimal ein Kommentar von der selben IP-Adresse mit unterschiedlichem Namen und kurz hintereinander. Wenn wirklich Hilfe gewünscht ist, dann bitte mit richtigen Namen, etwas geduldiger, und mit konkreter Problembeschreibung: Was genau wird nicht verstanden?

    Gruß
    Stefan

  4. Amelie | 27. Januar 2010 um 12:31 | Permalink

    ja wir sahen im computerraum nebeneinander und mussten diese aufgabe in Infomartik machen.
    Wir sollten diese Verschlüsserung selbst herstellen mit java. ja und wir sind java nieten

  5. Stefan Kiesel | 27. Januar 2010 um 14:44 | Permalink

    Hallo Amelie,

    das ist ja alles kein Thema. Wir helfen auch gerne, wenn es Probleme gibt. Aber ohne konkrete Frage kann ich euch leider nicht weiterhelfen.

    Gruß
    Stefan

Kommentar verfassen

Dein E-Mail wird nicht veröffentlicht oder weitergegeben. Pflichtfelder sind mit * markiert.