Caesar Cipher verschlüsselung

Loddakwin

Aktives Mitglied
Hallo ich muss ein Programm schreiben das das Cipher-Verfahren verwendet das war auch soweit kein Problem, da ich den algorithmus im net gefunden habe. Geht die Uni davon aus das man den algorithmus selber erkennt oder gehen sie davon aus das man im net nachschaut? Ich muss zugeben wäre auf den algorithmus nicht draufgekommen vl kann mir da wer antworten?
So nun zu meinem eigentlichen problem.

Java:
// takes a plain text String as input and returns the extended Caesar
    // ciphered String
    static String cipherExtendedCaesar(String text, int rotation) {

        String simple = cipherSimpleCaesar(text, rotation);
        String inverse = new StringBuilder(simple).reverse().toString();

        String result = "";
        for (int i = 0; i < simple.length(); i++) {
            if (simple.charAt(i) == 32) {
                result = result + " ";
            } else {
                result = result + simple.charAt(i) + inverse.charAt(i);
            }

        }

        return result;
    }

So wie im Anhang drinnen steht muss ich die Strings zusammenfügen aber Buchstabe für Buchstabe und das abwechselnd aber er nimmt bei mir nach dem leerzeichen im den falschen String wie könnt ich dem entgegenwirken?

lg
 

Anhänge

  • Unbenannt.PNG
    Unbenannt.PNG
    78,5 KB · Aufrufe: 21

Loddakwin

Aktives Mitglied
Ich hab hier noch irgendwas übersehen aber seh nicht was müsste doch eingeltich so funktionieren oder?
Java:
static String cipherExtendedCaesar(String text, int rotation) {

        String simple = cipherSimpleCaesar(text, rotation);
        String inverse = new StringBuilder(simple).reverse().toString();

        String result = "";
        for (int i = 0; i < simple.length(); i++) {
            if (simple.charAt(i) == 32) {
                result = result + "" + simple.charAt(i) + inverse.charAt(i);
                i++;
            } else if (inverse.charAt(i) == 32) {
                result = result + "";
            } else {
                result = result + simple.charAt(i) + inverse.charAt(i);
            }
        }

        return result;
    }
 

Loddakwin

Aktives Mitglied
Lösung:
Java:
static String cipherExtendedCaesar(String text, int rotation) {

        String simple = cipherSimpleCaesar(text, rotation);
        String inverse = new StringBuilder(simple).reverse().toString();
        inverse = inverse.replaceAll(" ", "");

        StringCharacterIterator simpleIter = new StringCharacterIterator(simple);
        StringCharacterIterator inverseIter = new StringCharacterIterator(inverse);

        String result = "";
        for (char sim = simpleIter.first(), inv = inverseIter.first(); sim != CharacterIterator.DONE; sim = simpleIter
                .next(), inv = inverseIter.next()) {
            if (sim == ' ') {
                result = result + " " + simpleIter.next() + inverseIter.current();
            } else {
                result = result + sim + inv;
            }
        }

        return result;
    }
 

Neue Themen


Oben