next up previous contents
Nächste Seite: Einen Chiffretext mit dem Aufwärts: Verschlüsseln und Entschlüsseln von Vorherige Seite: Entschlüsseln mit dem Substitutionsverfahren   Inhalt

Klartext mit dem Vigenère Verfahren verschlüsseln

import java.io.*;

public class vigenere1 {
    static byte geheim[] = new byte[256];
    static byte geheimwort[] = new byte[256];
    static int l; // Länge des Schlüsselwortes
    static int n; // Länge des Textes
    static File g; // Ausgabe des Chiffretextes
    static DataOutputStream ausgabe;
    
    public static void main (String args[]) {
        File f = new File(args[0]); 
        g = new File(args[1]);

        try {  
            BufferedReader eingabe = new BufferedReader(new FileReader(f));
            ausgabe = new DataOutputStream(new FileOutputStream(g));
            geheimwort = args[2].getBytes(); 
            l = geheimwort.length;
            for (int i=0; i<l; i++) {
                if (geheimwort[i]>90) geheimwort[i] -= 32;
                geheimwort[i] -= 65;
            }
            String zeile = eingabe.readLine();
            while (zeile != null) { 
                verschluessle(zeile);
                zeile = eingabe.readLine();
            }
            System.out.println(n+" Zeichen verschluesselt.");
        }
        catch (IOException e) {System.err.println(e.toString());
        }
    }
    
    public static void verschluessle (String s) {
        geheim = s.getBytes();
        for (int i=0; i<geheim.length; i++, n++) {
            if (geheim[i]>90) geheim[i] = (byte) (geheim[i]-32);
            int k = n % l;
            geheim[i] = (byte)(geheim[i] + geheimwort[k]);
            if (geheim[i]>90) geheim[i] = (byte) (geheim[i]-26);   
        }
        
        try {
            for (int i=0; i<geheim.length; i++) ausgabe.write(geheim[i]);
            ausgabe.write('\n');
        }
        catch (IOException e) {System.err.println(e.toString());
        }
    }
}

Wir wenden diese Klasse auf die Klartextdatei vigeneretext.txt an und schreiben die verschlüsselten Daten in die Chiffretextdatei vigeneretext.chf; dabei verwenden wir das Schlüsselwort krypto:

alfred@duron:~/java/kurs/krypto> java vigenere1 vigeneretext.txt vigeneretext.chf krypto
89 Zeichen verschluesselt.

Beachte, wie bei jedem Durchlauf der for - Schleife gleichzeitig zwei Variable inkrementiert werden: for (int i=0; i<geheim.length; i++, n++).


Die Chiffretext-Datei wird im nächsten Beispiel entschlüsselt. Da dabei das gleiche Schlüsselwort wie beim Verschlüsseln verwendet wird, muss grundsätzlich neben dem Chiffretext auch das Schlüsselwort zwischen Sender und Empfänger übertragen werden15.



Alfred Nussbaumer 2003-02-10