Dechiffrieren eines Textes mit Cäsars Methode?
Hallo zusammen,
ich habe ein Problem, bei dem ich Hoffe, ihr könnt mir helfen. Ich muss einen Text chiffrieren/dechiffrieren, wie in der folgenden Aufgabe: Das Chiffrieren und Dechiffrieren von Textnachrichten hat eine lange Tradition. Eine der ¨altesten bekannten Chiffrierungsmethoden geht auf den r¨omischen Feldherr Gaius Julius Caesar zuruck. Daher ¨ spricht man auch von der Caesar-Verschlüsselung. Sie ist eine einfache, symmetrische Verschlüsselung, ¨ d.h. es wird immer derselbe Schlüssel für das Verschlüsseln und das Entschlüsseln verwendet. Bei ¨ der Verschlusselung wird jeder Buchstabe des Klartexts auf einen anderen Buchstaben abgebildet. ¨ Dabei gibt der Schlussel an, um wie viele Stellen der Buchstabe im Alphabet verschoben wird. Zum ¨ Beispiel wird aus ” Hello World“ beim Schlussel drei ¨ ” Khoor Zruog“.
Implementieren Sie die Methode cipher, welche einen Text mittels Caesar Verschlusselung chiffriert ¨ und alle Möglichkeiten der Chiffrierung in einer Liste zuruck gibt.
Aber ich bekomme immer nur eine Dechiffrierungsvariante ausgegeben. Könnt ihr mir sagen warum?
![Mein bisheriger Code - (Computer, Freizeit, Sprache)](https://images.gutefrage.net/media/fragen/bilder/dechiffrieren-eines-textes-mit-caesars-methode/0_big.jpg?v=1512689637000)
2 Antworten
![](https://images.gutefrage.net/media/user/Isendrak/1555747535308_nmmslarge__0_0_160_160_7f828fad18ee7edb96b8daceedaeeadb.png?v=1555747535000)
Mich wundert eher, dass überhaupt eine ausgegeben wird... (Evtl. macht ArrayList.toString() in etwa das gleiche wie ArrayList.get(0).toString()...)
Aber zur eigentlichen Antwort:
Versuch mal die Zeile
System.out.println(cipher(text));
durch das zu ersetzen:
for(String encryption : cipher(text)){
System.out.println(encryption);
}
P.S.: Allerdings hat dein Code noch ein par andere Probleme... Versuch mal als Eingabetext etwas wie "Oh, oh... Das könnte schiefgehen...". Evtl. kommst ja selbst dahinter, wo das Problem dabei liegt. ;)
![](https://images.gutefrage.net/media/user/Staryj/1475689125902_nmmslarge__29_3_442_442_d99ef2963abdb8c5c1129a2609c92f51.jpg?v=1475689128000)
Habe den Fehler gefunden und erfolgreich beseitigt... xD
Eine banale Sache, ich habe vergessen die Variable "i", nach der inneren Schleife, zurückzusetzen.
![](https://images.gutefrage.net/media/user/Isendrak/1555747535308_nmmslarge__0_0_160_160_7f828fad18ee7edb96b8daceedaeeadb.png?v=1555747535000)
Okay, das hatte ich, als ich meine Antwort geschrieben habe ebenfalls übersehen... %D
Könntest aber an der Stelle statt eine while-Schleife auch einfach ne for-Schleife benutzen:
for(int i = 0; i < text.length(); ++i){
//TODO: Buchstabenverschiebung hier implementieren.
}
Hat leider nicht funktioniert... Trotzdem danke :)
Mir ist bewusst, dass das Programm Macken hat und ich noch alle Zeichen die nicht Buchstaben sind rausfiltern muss.