Ceasar Entschlüsselung

Reach

Mitglied
Hey,
bin gerade dabei Ceasar zu entschlüsseln.
Will vorgehen das ich erst den maximalen Buchstaben rausfinde und das damit umwandele..
Ich lese ein verschlüsseltes Wort ein , ich sag mal " ibmmp" wird eingelesen, also hallo ist das Wort, Verschiebung um 1 also .

Vom codieren sollte es kein Problem sein, mir fehlt nur der Ansatz dieses zu codieren, also die Vorgehensweise.

Maximumssuche , wäre hier das m .. nur im deutschen Alphabet ist der meist gebrauchteste Buchstabe das e , wie komme ich also dann leicht zu l , ich hab da irgendwie glaub ich einen Denkfehler drin, bzw mir fehlt irgendeine Überlegung beim Vorgehen.
Danke für die Hilfe :)
 

temi

Top Contributor
Du möchtest also die Chiffre brechen?
Der Ansatz mit der Häufigkeitsverteilung ist bei einer einfachen Chiffre ein Anfang, allerdings ist dein Geheimtext zu kurz dazu.
Ließ doch mal E.A. Poe "Der Goldkäfer" ;)

Edit: Das ist durchaus ernst gemeint und ist, da der Autor bereits seit längerem verstorben ist, vermutlich auch im Netz umsonst zu haben.

Ansonsten: Kryptanalyse ist ein spannendes, aber auch nicht so einfaches Thema. Dafür gibt es ganz gute, aber auch ziemlich mathematisch anspruchsvolle Literatur. Bei einer einfachen Chiffre wie Caesar, ist vermutlich Bruteforce ein geeignetes Mittel.
 

Reach

Mitglied
hm.. sollte eigentlich glaub ich nicht so schwierig sein.. nur buchstaben a-z .. aber ich komm nicht voran :-D mir fehlt einfach ein ansatz xD .. will keine vorgefertigen encoder oder so nehmen , sondern es per hand schreiben.. also theoretisch dreh ich die scheibe, aber raffe schon theoretisch nicht wie ich das wort rausbekomme wenn ich nur das verschlüsselte wort habe xD
 

temi

Top Contributor
Mir ist noch nicht klar was du überhaupt machen willst. Verschlüsseln? Entschlüsseln? Entschlüsseln mit bekanntem Schlüssel?

Bei einer einfachen Alphabetverschiebung gibt es nur 25 Schlüssel. Probiere sie einfach der Reihe nach aus, bis etwas sinnvolles herauskommt (=Bruteforce).
 
Zuletzt bearbeitet:

Reach

Mitglied
Bin schonmal weiter gekommen xD
Entschlüsseln..
Hänge nur gerade bei der Berechnung im Kreis fest..
Mal ganz tribial angenommen: e ist der meist gebrauchte Buchstabe. Dann habe ich ein Array mit Länge 26 ..

Code:
    for (int i = 0; i < 26; i++) {
               tafel[i] = 97 + i;   
           }
Dann sag ich mal die Schritte zum entschlüsseln sind 13.
Wie kann ich im Kreis rechnen, das ich das Array ,also wenn z.B. ein x da steht + 13 Schritte dann nach tafel [25] (ist ja z) bei tafel[0] weiterzählt..

Code:
 int ausgabe = (schritte + text.charAt(i)) % tafel[26];

habe mir sowas gedacht , aber da fehlt ja noch was .. muss ja für alle buchstaben dann funktionieren.. also für ein a + 13 schritte , b + 13 schritte etc..

Kann man da geschickte If Abfragen schreiben? Mir fehlt gerade ein kleiner Denkanstoß :D
 

Larius

Mitglied
Als kleiner Denkanstoß:

Ein jedes Zeichen hat einen ASCII Code. Ein kleines a hat bsp. den Code 97, während ein großes A 65 hat. Eine Liste findest du unter http://www.torsten-horn.de/techdocs/ascii.htm

Du musst eigentlich dann deinen verschlüsselten Text nehmen, über jedes Zeichen iterieren, das Character entsprechend dann in einen Integer umwandeln, die Schritte dazu bzw. abziehen (je nachdem, in welche Verschlüsselung das Ganze gegangen ist) und dann wieder den Integer in einen Character umkonvertieren.

Sprich zb (Acthung Pseudocode!)

int tmp = 0;
int steps = 13;
String text = "sdzhadsjuasd";

Code:
for(int counter = 0; counter < text.length; counter++) {
    tmp = (int) text.charAt(counter);
    tmp += 13; //oder halt -=, je nachdem in welche Richtung
    text[counter] = (char) tmp;
}

Dann sollte es gehen.
 

krgewb

Top Contributor
@Reach Du brauchst eine for-Schleife innerhalb der for-Schleife.

@Larius In Beitrag #5 hat er bereits die Zahl 97 in seinem Code.
In deinem Pseudocode ist der Fall bei Überlauf nicht gelöst, evtl. mithilfe von Modulo?
 

Ähnliche Java Themen

Neue Themen


Oben