# Caesar Cipher verschlüsselung



## Loddakwin (13. Nov 2015)

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.


```
// 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


----------



## Loddakwin (13. Nov 2015)

Ich hab hier noch irgendwas übersehen aber seh nicht was müsste doch eingeltich so funktionieren oder?

```
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 (14. Nov 2015)

Kann mir wirklich keiner einen Tipp geben?


----------



## Loddakwin (15. Nov 2015)

Lösung:

```
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;
    }
```


----------

