BlueJ Cäsar-Implementierung

Steamer

Mitglied
Moinmoin Leute,

ich habe ein Gewisses Problem mit der Cäsar-Implementierung.
Ich soll für eine Arbeit in Informatik die Cäsar-Verschlüsselung implementieren, allerdings ist das Stoff, der erst in etwa einem Jahr an der Reihe ist.

Mein folgender Code sieht folgendermaßen aus:
Java:
import java.util.*;
/**
 * @author 
 * @version 1.0
 */
public class caesar
{
    // Bezugsobjekte

    // Attribute

    // Konstruktor

    public static void main(String[] caesarOutput) 
    { 

        System.out.println(caesar("erstellt am 28.02.12 ")); 
        System.out.println(caesar2("huvwhoow#dp#5;135145#"));

          
    } 

    static String caesar(String input) 
    { 
        String text = "" ; 
        char[] output = input.toCharArray(); 
        for(char letter : output) 
           text += (char)(letter+3); 

        return text; 
    }
        static String caesar2(String input) 
    { 
        String text = ""; 
        char[] output = input.toCharArray(); 
        for(char letter : output) 
            text += (char)(letter-3); 

        return text; 
    }
}

Es funktioniert auch alles ganz gut, bis auf die Tatsache, dass ich zum Ver- bzw Entschlüsseln alles Manuell starten muss und nicht nur das Alphabet, sondern auch SOnderzeichen eingesetzt werden, falls im codierten bzw encodierten Wort die Zahlen nicht ausreichen und unter "a" bzs über "z" hinausreichen.

Noch dazu sollte ich das alles interaktiv in einem SuM-Fenster ändern können, sprich Schlüssel, Klartext und Geheimtext,wobei die letzten beiden jeweils per Knopfdruck umgewandelt werden.

Ich würde mich über Hilfe sehr freuen, denn selbst wenn ich mit meiner jetzigen Arbeit recht zufrieden bin, würde ich das ganze gerne noch ausweiten.

Vielen Dank schon einmal

MfG
Steamer
 

JavaProfi

Aktives Mitglied
Hier etwas konstruktive Kritik:
Dein Implementierung der Caesar-Verschlüsselung ist keine saubere Implementierung, da der Klartextraum nicht abschließend auf den Chiffretextraum abgebildet wird. Deine Implementierung ist nur ein Teil (nämlich die reine Verschiebechiffre). Es fehlt die modulare Arithmetik.

Überlege dir mal was passiert, wenn du das letzte Zeichen deines Klartextalphabets um 3 Zeichen nach vorn verschieben willst.

Gruß
JP
 

Steamer

Mitglied
Das ist unter anderem mein Problem und ich bekomme es nicht gelöst,die Sonderzeichen sollten dort nicht vorhanden sein, aber ich habe keine andere Lösung gefunden.

EDIT:
Zumindest keine Lösung, die ich durch meine jetzigen Kenntnisse anwenden könnte.
 
Zuletzt bearbeitet:
M

Marcinek

Gast
Ja und nu?? Du sagst dir fehlen die kentnisse. Entweder du wartest ein Jahr oder du fängst an zu lernen.
Kleiner Tipp: überleg die mal, ob du der erste bist, der das implementiert.

Ansonsten siehe posting weiter oben. Was passiert, wenn du z um 3 verschiebst. Welcher Buchstabe muss kommen??
 

x22

Bekanntes Mitglied
Methode:

Java:
 public class Caesar2{
public static String caesarVerschluesselung(String original, int schluessel){
		    String geheimText = "";
		    int num;

		  //nur Grossbuchstaben
		    original = original.toUpperCase(); 
		    if (schluessel >=0){
		      for (int i=0; i<original.length(); i++){
		        num = original.charAt(i);

		      //Filtern der Leerzeichen
		        if(num ==' ');             
		        else{
		          num+=schluessel;

		        //Zurück ins Alphabet
		          if  (num>90) num-=26;   

		        //Aufbau des Geheimtextes
		          geheimText += (char)num; 
		        }
		      }
		    }
		    
		    else{
		       for (int i=0; i<original.length(); i++){
		        num = original.charAt(i);

		      //Filtern der Leerzeichen
		        if(num ==' ');             
		        else{
		          num+=schluessel;

		          //Zurueck ins Alphabet
		          if  (num<65) num+=26;   

		        //Aufbau des Geheimtextes
		          geheimText += (char)num; 
		        }
		      }
		    }
		    

		    return geheimText;
		  }


Schau dir die Methode mal an, habs n bisschen kommentiert gelassen..
Wenn du das verstehst, kannst es ja mal ausprobieren.

In der Main Methode musst dann noch n Schlüssel und eben deinen Text anlegen, den du ändern willst.
Der Schlüssel gibt an, um wieviel Stellen ein Wert verschoben wird.

Java:
public class CaesarVerschluesselungTest {

	  public static void main (String[] args) {
	    String text = "Umgehen des Sicherheitssystems";
	    System.out.println(Caesar2.caesarVerschluesselung(text, 2));
	  }
	}
}

In dem Fall: Schlüssel=2, also aus x-> z
a -> c
etc.

Das ist deine Main-Klasse.
Weiss ja nicht was für Grundlagen dir da Fehlen, aber sind alles nur verzweigte Schleifen oder if Anweisungen..

Best regards,
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Unterschied zwischen List und LinkedList implementierung? Allgemeine Java-Themen 15
boschl2000 Springerproblem-Implementierung funktioniert nicht richtig Allgemeine Java-Themen 1
L rotateLeft implementierung Allgemeine Java-Themen 2
R In der Ausgabe sollte anstelle des obersten Sterns ein "+" stehen nur scheitere ich bei der Implementierung Allgemeine Java-Themen 9
D Input/Output Implementierung eines CommandHandlers/Parsers für viele Eingaben Allgemeine Java-Themen 26
Stonie Prüfen von direkter Implementierung eines Interfaces Allgemeine Java-Themen 7
S Mutable objects und Implementierung von ChangeEvents Allgemeine Java-Themen 5
W Queue Implementierung Allgemeine Java-Themen 6
C Ein Iterator ist eine Implementierung des Interface Iterable? Allgemeine Java-Themen 2
F Implementierung von Teilprogrammen [Java|Python] Allgemeine Java-Themen 7
I TimSort - Sortieralgorithmus - Erklärung und Pseudocode - Implementierung Allgemeine Java-Themen 2
L Implementierung eines AVT-Baums Allgemeine Java-Themen 2
ruutaiokwu burstsort-implementierung in java? Allgemeine Java-Themen 2
D Implementierung einer Mehrsprachigkeit, wichtig ? Allgemeine Java-Themen 5
D Implementierung einer Rechteverwaltung Allgemeine Java-Themen 2
A Implementierung eines Algorithmus (Farthest Insertion zur Lösung des TSP) in O(n²) Allgemeine Java-Themen 2
R "Countdown" Implementierung Allgemeine Java-Themen 5
K A*-Implementierung flexibler machen Allgemeine Java-Themen 4
J Java-Implementierung diverser Beziehungen zwischen Klassen bzw. Objekten Allgemeine Java-Themen 2
S Implementierung Programmneustart Allgemeine Java-Themen 10
R Implementierung eines Interface durch 2 verschiedene Klassen Allgemeine Java-Themen 6
G Implementierung einer Kommunikation Allgemeine Java-Themen 7
S Implementierung einer PluginArchitektur Allgemeine Java-Themen 5
A OOP: Überschreiben/Implementierung von Methoden Allgemeine Java-Themen 5
K Objekt einer konkreten Implementierung eines Interfaces durch übergebenen String Allgemeine Java-Themen 2
R Intervall-Implementierung mit selbstgebauter LinkedList Allgemeine Java-Themen 7
J Best Practice für implementierung von equals(...) Allgemeine Java-Themen 7
Kr0e Eigene RMI Implementierung Allgemeine Java-Themen 3
V Wie finde ich die konkrete Implementierung? Allgemeine Java-Themen 8
G Implementierung vom AKS-Test Allgemeine Java-Themen 11
R software implementierung Allgemeine Java-Themen 3
N Observer/Observable der JAVA-API od. eigene Implementierung Allgemeine Java-Themen 2
K Design / Implementierung Allgemeine Java-Themen 5
B jre browser implementierung ? Allgemeine Java-Themen 4
B Elegantere Lösung bei der Implementierung eines Interfaces Allgemeine Java-Themen 2
G Klasse Queue Implementierung in Java Allgemeine Java-Themen 4
G Eigene PrintService Implementierung. Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben