26.04.10, 23:37
|
#48 (permalink)
|
| Moderator
Registriert seit: 11.02.06 Likes: 229 | 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)
|
| |