T
Tete
Mitglied
Guten Tag,
wenn ich folgendes Programm ausführe hat es immer Probleme mit mehr als einem Wort als Eingabe. Wenn ich bspw. 2 Wörter eingebe wird das 2 bei der Vigenere Verschlüsslung für den Key gehalten obwohl das eigentlich noch zum ersten String gehören sollte.
Weiß jemand woran das liegt?
Vielen Dank!
wenn ich folgendes Programm ausführe hat es immer Probleme mit mehr als einem Wort als Eingabe. Wenn ich bspw. 2 Wörter eingebe wird das 2 bei der Vigenere Verschlüsslung für den Key gehalten obwohl das eigentlich noch zum ersten String gehören sollte.
Weiß jemand woran das liegt?
Vigenere:
package crypt;
public class Vigenere {
public String finishedEncryption,finishedDecryption;
public String encrypt(String pText, String pKeyword) {
char charArrayText [] = pText.toCharArray();
char charArrayKeyword [] = pKeyword.toCharArray();
int [] x = new int[charArrayText.length];
int [] k = new int[charArrayKeyword.length];
int [] y = new int[charArrayText.length];
char[] result = new char[charArrayText.length];
for(int i=0;i<charArrayText.length;i++) {
x[i] = charArrayText[i];
x[i] -= 65;
}
for(int i=0;i<charArrayKeyword.length;i++) {
k[i] = charArrayKeyword[i];
k[i] -= 65;
}
int kword =0;
for(int i=0;i<charArrayText.length;i++) {
if(!(x[i]==' ')) {
y[i] = x[i]+k[kword];
kword++;
if(kword==k.length) {
kword=0;
}
if(y[i]>25) {
y[i] -= 26;
}
}
y[i]+=65;
result[i]=(char) y[i];
}
finishedEncryption = new String(result);
return finishedEncryption;
}
public String decrypt(String pText, String pKeyword) {
char charArrayText [] = pText.toCharArray();
char charArrayKeyword [] = pKeyword.toCharArray();
}
}
Caesar:
package crypt;
public class Caesar {
public int[] pE, pD;
public char[] übertragung;
public String finishedEncryption,finishedDecryption;
public String encrypt(String pText, int pKey) {
char charArray[] = pText.toCharArray();
pE = new int[charArray.length];
übertragung = new char[charArray.length];
for (int i=0;i<charArray.length; i++) {
pE[i] = charArray[i];
}
for (int i=0;i<charArray.length; i++) {
pE[i] = pE[i]+pKey;
if (pE[i]>='Z'+1) {
pE[i] -=26;
}
übertragung[i]=(char) pE[i];
}
finishedEncryption = new String(übertragung);
return finishedEncryption;
}
public String decrypt(String pText, int pKey) {
char charArray[] = pText.toCharArray();
pD = new int[charArray.length];
übertragung = new char[charArray.length];
for (int i=0;i<charArray.length; i++) {
pD[i] = charArray[i];
}
for (int i=0;i<charArray.length; i++) {
pD[i] = pD[i]-pKey;
if (pD[i]<='A'-1) {
pD[i] +=26;
}
übertragung[i]=(char) pD[i];
}
finishedEncryption = new String(übertragung);
return finishedEncryption;
}
}
Main:
package crypt;
import java.util.*;
public class Main {
public static Scanner sc = new Scanner(System.in);
public static int eingabe,eingabeCaesar,eingabeVigenere;
public static boolean errorEingabe = true;
public static Caesar c = new Caesar();
public static Vigenere v = new Vigenere();
public static void main(String[] args) {
System.out.println("Facharbeit Kryptographie von ");
System.out.println();
System.out.println("Wählen Sie folgend wie Sie Ihren Klartext mittels historischer Chiffre chiffrieren wollen:");
while(errorEingabe) {
System.out.println("(1) Caesar-Chiffre (2) Vigenere-Chiffre");
eingabe = sc.nextInt();
if (eingabe == 1) {
errorEingabe = false;
System.out.println("Caesar-Chiffre");
System.out.println("Möchten Sie eine Chiffrierung (1) oder eine Dechiffrierung (2) durchführen?");
eingabeCaesar = sc.nextInt();
if(eingabeCaesar == 1) {
System.out.println("Bitte geben Sie zuerst den Klartext(Nur Großbuchstaben) ein, drücken Sie danach enter und geben Sie anschließend den Schlüssel (ganze Zahl) ein");
System.out.println(c.encrypt(sc.next(),sc.nextInt()));
}
else if (eingabeCaesar == 2) {
System.out.println("Bitte geben Sie zuerst das Chiffrat(Nur Großbuchstaben) ein, drücken Sie danach enter und geben Sie anschließend den Schlüssel (ganze Zahl) ein");
System.out.println(c.decrypt(sc.next(),sc.nextInt()));
}
else {
System.out.println("Ihre Eingabe ist ungültig.");
errorEingabe = true;
}
}
else if (eingabe == 2) {
errorEingabe = false;
System.out.println("Vigenere-Chiffre");
System.out.println("Möchten Sie eine Chiffrierung (1) oder eine Dechiffrierung (2) durchführen?");
eingabeVigenere = sc.nextInt();
if(eingabeVigenere == 1) {
System.out.println("Bitte geben Sie zuerst den Klartext ein, drücken Sie danach enter und geben Sie anschließend das Schlüsselwort ein");
String s = sc.next();
String k = sc.next();
System.out.println(v.encrypt(s,k));
}
else if (eingabeCaesar == 2) {
System.out.println("Bitte geben Sie zuerst das Chiffrat ein, drücken Sie danach enter und geben Sie anschließend das Schlüsselwort ein");
System.out.println(v.decrypt(sc.next(),sc.next()));
}
else {
System.out.println("Ihre Eingabe ist ungültig.");
errorEingabe = true;
}
}
else {
System.out.println("Ihre Eingabe ist ungültig. Wählen Sie bitte:");
}
}
}
}
Vielen Dank!