next up previous contents
Nächste Seite: Klartext durch Substitution verschlüsseln Aufwärts: Verschlüsseln und Entschlüsseln von Vorherige Seite: Buchstabenhäufigkeiten aus Textdateien ermitteln   Inhalt

Verschiebechiffre entschlüsseln

Um einen Caesar-Geheimtext zu entschlüsseln, sind maximal 26 Versuche - im Schnitt 13 Versuche - notwendig. Wir verwenden dazu beispielsweise das folgende Java-Programm decaesar1.java:

import java.io.*;

public class decaesar1 {

    static byte klar [] = new byte[100];
    
    public static void main (String args[]) throws Exception {
        File f = new File(args[1]);
        
        try {
            FileReader fr = new FileReader(f);
            BufferedReader eingabe = new BufferedReader(fr);
            String zeile = eingabe.readLine();
            while (zeile != null) {

                entschluessle (args[0], zeile);
                zeile = eingabe.readLine();
            }
        }
        catch (FileNotFoundException e) {
            System.out.println(args[1] + " - Datei nicht vorhanden");
        }
    }

    public static void entschluessle(String stellen, String zeile) {
        klar = zeile.getBytes();
        for (int i=0; i<klar.length;i++) {
            klar[i]-= (byte) Integer.parseInt(stellen);
            if (klar[i]<65) klar[i]+=26;
        }
        ausgabe();
    }

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

Beim Aufruf des Entschlüsselungverfahrens werden zwei Parameter angegeben: Der erste Parameter beschreibt die erfolgte Verschiebung, und der zweite Parameter enthält den Namen der Datei, in der die verschlüsselte Nachricht enthalten ist:

alfred@duron:~/java/kurs/krypto> java decaesar1 3 caesartext.chf

DIESISTEINTESTINFORMATIKISTSCHOENSAGTEININFORMATIKLEHRERUNDLEHRERLUEGENNICHTSAGTDERLEHRER

Mit Hilfe der Exception lässt sich ein Dateinamefehler auffangen:

alfred@duron:~/java/kurs/krypto> java decaesar1 3 caesartext.ccc
caesartext.ccc - Datei nicht vorhanden



Alfred Nussbaumer 2003-02-10