Nabend,
ich habe folgendes Problem: Für meine Facharbeit soll ich unter anderem Caesar programmieren... An sich funktioniert die Verschiebung, aber die Werte nach 'z' /'Z' gehen weiter... Kann mir da wer helfen?
[CODE lang="java" title="Main"]package crypt;
import java.util.*;
public class Main {
public static Scanner sc = new Scanner(System.in);
public static int eingabe,eingabeCaesar;
public static boolean errorEingabe = true;
public static Caesar c = new Caesar();
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 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 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;
}
else {
System.out.println("Ihre Eingabe ist ungültig. Wählen Sie bitte:");
}
}
}
}[/CODE]
[CODE lang="java" title="Caesar"]package crypt;
public class Caesar {
public char[] preEncryption, preDecryption;
public String finishedEncryption,finishedDecryption;
public String encrypt(String pText, int pKey) {
char charArray[] = pText.toCharArray();
preEncryption = new char[charArray.length];
for (int i=0;i<charArray.length; i++) {
preEncryption = charArray;
}
for (int i=0;i<charArray.length; i++) {
preEncryption = (char) (preEncryption+pKey);
}
finishedEncryption = new String(preEncryption);
return finishedEncryption;
}
public String decrypt(String pText, int pKey) {
char charArray[] = pText.toCharArray();
preDecryption = new char[charArray.length];
for (int i=0;i<charArray.length; i++) {
preDecryption = charArray;
}
for (int i=0;i<charArray.length; i++) {
preDecryption = (char) (preDecryption-pKey);
}
finishedDecryption = new String(preDecryption);
return finishedDecryption;
}
}[/CODE]
Vielen Dank !
ich habe folgendes Problem: Für meine Facharbeit soll ich unter anderem Caesar programmieren... An sich funktioniert die Verschiebung, aber die Werte nach 'z' /'Z' gehen weiter... Kann mir da wer helfen?
[CODE lang="java" title="Main"]package crypt;
import java.util.*;
public class Main {
public static Scanner sc = new Scanner(System.in);
public static int eingabe,eingabeCaesar;
public static boolean errorEingabe = true;
public static Caesar c = new Caesar();
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 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 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;
}
else {
System.out.println("Ihre Eingabe ist ungültig. Wählen Sie bitte:");
}
}
}
}[/CODE]
[CODE lang="java" title="Caesar"]package crypt;
public class Caesar {
public char[] preEncryption, preDecryption;
public String finishedEncryption,finishedDecryption;
public String encrypt(String pText, int pKey) {
char charArray[] = pText.toCharArray();
preEncryption = new char[charArray.length];
for (int i=0;i<charArray.length; i++) {
preEncryption = charArray;
}
for (int i=0;i<charArray.length; i++) {
preEncryption = (char) (preEncryption+pKey);
}
finishedEncryption = new String(preEncryption);
return finishedEncryption;
}
public String decrypt(String pText, int pKey) {
char charArray[] = pText.toCharArray();
preDecryption = new char[charArray.length];
for (int i=0;i<charArray.length; i++) {
preDecryption = charArray;
}
for (int i=0;i<charArray.length; i++) {
preDecryption = (char) (preDecryption-pKey);
}
finishedDecryption = new String(preDecryption);
return finishedDecryption;
}
}[/CODE]
Vielen Dank !