Einzelnen Beitrag anzeigen
Alt 26.04.10, 23:37   #48 (permalink)
Tarantoga
Moderator
 
Benutzerbild von Tarantoga
 
Registriert seit: 11.02.06
Tarantoga QuadcoreTarantoga QuadcoreTarantoga QuadcoreTarantoga QuadcoreTarantoga QuadcoreTarantoga Quadcore
Likes: 229
Standard

Da ich mich gerade (mal wieder) etwas näher mit Kryptographie beschäftige & die beiden Chiffren echte Klassiker der Kryptographie bilden, so wie das allseits beliebte HelloWorld für die Programmierung, habe ich eine kleine Java-Anwendung dazu geschrieben. Für eine GUI war ich zu faul & das Programm arbeitet auch ausschließlich mit Textdateien die im selben Ordner liegen...

Java-Code   
Code:
import java.io.*;

public class KryptoHabo 
{//class
    public static void vigenereDecipher(String name, String keyWord)throws IOException
    {//vigenereDecipher()
        String dateiInhalt="0", dateiKlar;
        int textZaehler, keyZaehler;
        char[]krypt;
        FileReader faus=new FileReader(name+".txt");
        for (int i; (i=faus.read())!=-1;)
        {
            dateiInhalt=dateiInhalt+(char)(i);
        }
        dateiKlar=dateiInhalt.substring(1);
        textZaehler=dateiKlar.length();
        keyZaehler=keyWord.length();
        krypt=new char[textZaehler];
        for (int i=0, j=0; i<textZaehler; i++, j++)
        {
            if (j==keyZaehler)j=0;
            krypt[i]=(char)(dateiKlar.charAt(i)-keyWord.charAt(j));
        }
        FileWriter fein=new FileWriter(name+".txt");
        for (int i=0; i<textZaehler; i++)
        {
            fein.write(krypt[i]);
        }
        fein.close();
        System.out.println("Datei >"+name+"< entschlüsselt!");
        menue();
    }//vigenereDecipher()
    public static void vigenereCipher(String name, String keyWord)throws IOException
    {//vigenereCipher()
        String dateiInhalt="0", dateiKlar;
        int textZaehler, keyZaehler;
        char[]krypt;
        FileReader faus=new FileReader(name+".txt");
        for (int i; (i=faus.read())!=-1;)
        {
            dateiInhalt=dateiInhalt+(char)(i);
        }
        dateiKlar=dateiInhalt.substring(1);
        textZaehler=dateiKlar.length();
        keyZaehler=keyWord.length();
        krypt=new char[textZaehler];
        for (int i=0, j=0; i<textZaehler; i++, j++)
        {
            if (j==keyZaehler)j=0;
            krypt[i]=(char)(dateiKlar.charAt(i)+keyWord.charAt(j));
        }
        FileWriter fein=new FileWriter(name+".txt");
        for (int i=0; i<textZaehler; i++)
        {
            fein.write(krypt[i]);
        }
        fein.close();
        System.out.println("Datei >"+name+"< verschlüsselt!");
        menue();
    }//vigenereCipher()
    public static void caesarDecipher(String name, Integer key)throws IOException
    {//caesarDecipher()
        String dateiInhalt="0", dateiNeu;
        FileReader faus=new FileReader(name+".txt");
        for (int i; (i=faus.read())!=-1;)
        {
            dateiInhalt=dateiInhalt+(char)(i-key);
        }
        dateiNeu=dateiInhalt.substring(1);
        FileWriter fein=new FileWriter(name+".txt");
        fein.write(dateiNeu);
        fein.close();
        System.out.println("Datei >"+name+"< entschlüsselt!");
        menue();
    }//caesarDecipher()        
    public static void caesarCipher(String name, Integer key)throws IOException
    {//caesarKrypt()
        String dateiInhalt="0", dateiNeu;
        FileReader faus=new FileReader(name+".txt");
        for (int i; (i=faus.read())!=-1;)
        {
            dateiInhalt=dateiInhalt+(char)(i+key);
        }
        dateiNeu=dateiInhalt.substring(1);
        FileWriter fein=new FileWriter(name+".txt");
        fein.write(dateiNeu);
        fein.close();
        System.out.println("Datei >"+name+"< verschlüsselt!");
        menue();
    }//caesarKrypt()
    public static void menue()throws IOException
    {//menue()
        BufferedReader ein=new BufferedReader(new InputStreamReader(System.in));
        int auswahl, key;
        String name, keyWord;
        
        System.out.println("1 - Textdatei mit dem Cäsar-Code verschlüsseln");
        System.out.println("2 - Textdatei mit dem Cäsar-Code entschlüsseln");
        System.out.println("3 - Textdatei mit dem Vigenere-Code verschlüsseln");
        System.out.println("4 - Textdatei mit dem Vigenere-Code entschlüsseln");
        System.out.println("5 - Programm beenden");
        auswahl=Integer.parseInt(ein.readLine());
        
        if (auswahl==1)
        {
            System.out.println("Namen der Textdatei eingeben:");
            name=ein.readLine();
            System.out.println("Schlüssel angeben (Integer):");
            key=Integer.parseInt(ein.readLine());
            
            caesarCipher(name, key);
        }
        else if (auswahl==2)
        {
            System.out.println("Namen der Textdatei eingeben:");
            name=ein.readLine();
            System.out.println("Schlüssel angeben (Integer):");
            key=Integer.parseInt(ein.readLine());
            caesarDecipher(name, key);
        }
        else if (auswahl==3)
        {
            System.out.println("Namen der Textdatei eingeben:");
            name=ein.readLine();
            System.out.println("Schlüsselwort eingeben:");
            keyWord=ein.readLine();
            vigenereCipher(name, keyWord);
        }
        else if (auswahl==4)
        {
            System.out.println("Namen der Textdatei eingeben:");
            name=ein.readLine();
            System.out.println("Schlüsselwort eingeben:");
            keyWord=ein.readLine();
            vigenereDecipher(name, keyWord);
        }
        else if (auswahl==5)
        {
            System.out.println("Programm beendet...");
            System.exit(0);
        }
        else
        {
            System.out.println("Ungültige Eingabe!");
            menue();
        }
    }//menue()    
    public static void main(String[]args)throws IOException
    {//main
        menue();
    }//main
}//class

Geändert von Tarantoga (26.11.10 um 16:18 Uhr)
Tarantoga ist offline   Mit Zitat antworten
 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61