next up previous contents
Nächste Seite: Substitutionschiffre Aufwärts: Einfache Chiffrier-Verfahren Vorherige Seite: Einfache Chiffrier-Verfahren   Inhalt

Verschiebechiffre

Unter einem Verschiebechiffre verstehen wir einen Algorithmus, der die Buchstaben des Alphabets durch einen Buchstaben ersetzt, der zum Klartext-Buchstaben eine gleichbleibende Entfernung hat. Nach seinem Erfinder wird dieses Verfahren auch eine Caesar Chiffre genannt.

Im folgenden Beispiel (caesar1.java) wird eine Zeichenkette von der Tastatur eingelesen. Anschließend werden alle Buchstaben in Großbuchstaben verwandelt. Dann findet die Verschiebung um eine bestimmte (gleich bleibende) Anzahl von Buchstaben im Alphabet statt. Schließlich wird der verschlüsselte Text in eine Textdatei ausgegeben.

import java.io.*;

public class caesar1 {

    static byte geheim[] = new byte[100];

    public static void main (String args[]) throws IOException{
        InputStreamReader datenstrom = new InputStreamReader(System.in);
        BufferedReader dateneingabe = new BufferedReader(datenstrom);
        String s = dateneingabe.readLine();
        verschluessle(s, args[0]);
        ausgabe();
    }

    public static void verschluessle (String s, String a) {
        geheim = s.getBytes();
        for (int i=0;i<geheim.length;i++) {
            if (geheim[i]>90) geheim[i]-=32;
            geheim[i]+=Integer.parseInt(a);
            if (geheim[i]>=90) geheim[i]-=26;
        }
    }

    public static void ausgabe () {
        String s="";
        for (int i=0;i<geheim.length;i++) {
            char interim = (char) geheim[i];
            s+= interim;
        }
        System.out.println("\n" + s);
    }
}

Im Programm wird die Zahl, um die alle Zeichen verschoben werden sollen, beim Aufruf als Befehlszeilenargument übergeben (args[0]. Der Klartext wird über die Standard-Eingabe eingegeben. Damit erhalten wir beispielsweise folgenden Programmlauf:

alfred@duron:~/java/kurs> java caesar1 3 
Informatik ist schoen

LQIRUPDWLN#LVW#VFKRHQ

Wie man sich leicht überlegen kann, ist die Verschiebechiffre sehr leicht zu knacken. Man braucht höchstens 26 Versuche, um den Chiffretext wieder in Klartext zu verwandeln:

alfred@duron:~/java/kurs> java caesar1 23
LQIRUPDWLN#LVW#VFKRHQ

INFORMATIK:IST:SCHOEN

Im Durchschnitt ist nur die halbe Anzahl von Versuchen, nämlich 13, notwendig, um die Chiffre zu entschlüsseln. Damit ist eine ernstzunehmende Verschlüsselung mit einer Verschiebechiffre unmöglich.


next up previous contents
Nächste Seite: Substitutionschiffre Aufwärts: Einfache Chiffrier-Verfahren Vorherige Seite: Einfache Chiffrier-Verfahren   Inhalt
Alfred Nussbaumer 2003-02-10