/*
 * "Grundkurs Programmieren in Java - Band 1 (4. Auflage, 2007)"
 * 2001-2007, Carl Hanser Verlag
 * Quelltext zu Aufgabe 12.1 (Version 4.0)
 * (c) 2001-2007 D. Ratz, J. Scheffler, D. Seese, J. Wiesenberger
 *
 */

public class XorEncoder extends Encoder {

  /** Hier wird der geheime Schluessel abgespeichert */
  private int key;

  /** Konstruktor. Dem Objekt wird der
      geheime Schluessel uebergeben */
  public XorEncoder(int key) {
    this.key = key;
  }

  /** Verschluesselt einen String anhand
      eines gegebenen Schluessels */
  public String encode(String s) {
    // Wandle den String in ein char-Array um
    // (toCharArray ist Methode der Klasse String)
    char[] c = s.toCharArray(); 
    // Wende auf die einzelnen Zeichen die XOR-Verschluesselung an
    for (int i=0;i<c.length;i++)
      c[i]=(char)(c[i]^key);
    // Gib das verschluesselte Feld als Array zurueck
    return new String(c);
  }

  /** Entschluesselt einen String anhand eines
      gegebenen Schluessels */
  public String decode(String s) {
    // Bei der einfachen XOR-Verschluesselung
    // sind Ver- und Entschluesselung identisch.
    // Wir koennen also die Methode encode verwenden
    return encode(s);
  }

}
