Caesar Encrypt+Decrypt

Manfredo

Mitglied
Hallo zusammen,

Ich muss für die Schule ein Java Projekt zu dem Thema Caesar-Verschlüsselung schreiben. Dabei sollen wir den plaintext und den Key durch Buffered Reader eingeben können. Dies soll jeweils für Encrypt und Decrypt gelten. Nun habe ich Probleme den Key eingeben zu können, sowie die Decrypt Variante, da es nicht so einfach ist wie gedacht, dass man einfach das Plus durch ein Minus ersetzen kann. Wie kann ich fortsetzen?

was ich bisher geschrieben hab:

---------------------------------------------------------------------

CaesarMain.java:
Java:
import java.io.*;

public class CaesarMain {

    public static void main(String[] args) throws IOException {
        
        BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Input Plaintext:");
        CaesarClass cl = new CaesarClass(input.readLine(), 1);
        System.out.println("Input Key:");

        System.out.println("Encrypted Text:");

        System.out.println(cl.encrypt());
    }

}
---------------------------------------------------------------------

CaesarClass.java:
Java:
public class CaesarClass {
   String alphabet ="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
   String plaintext;
   int key;

   public String encrypt() {
       StringBuilder tmp =  new StringBuilder();
       for(int i =0; i<plaintext.length(); i++) {
       char c = plaintext.charAt(i);
       int index = alphabet.indexOf(c);

      tmp.append(alphabet.charAt((index + key) % 26));
       }
      return tmp.toString();
   }

   public CaesarClass(String s, int k ) {
       plaintext = s;
       key = k;
   }
---------------------------------------------------------------------


mfg Manfredo
 
Zuletzt bearbeitet von einem Moderator:
Wo genau ist dein Problem mit "Schlüssel einlesen"?
Doch, du könntest schon einfach mit Minus arbeiten, dabei musst du aber bedenken, dass % kein Modulo-Operator ist. D.h.
Code:
-28%26
ist
Code:
-2
, dazu müsstest du noch mal 26 addieren.
 
Zuletzt bearbeitet:
hi,

Du solltest der MainMethode zwei Variabeln spendieren:

Java:
	public static void main(String[] args) throws IOException {
		int key;
		String text;
    	BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Input Plaintext:");
        text = input.readLine();
        System.out.println("Input Key:");
        key = Integer.valueOf( input.readLine() );
        CaesarClass cl = new CaesarClass(text, key);
        System.out.println("Encrypted Text:");
        System.out.println(cl.encrypt());
    }
}
 

Zurück
Oben