Kryptographie

Lisa:)

Mitglied
Hey Ihr alle!!
wir haben als Aufgabe bekommen in kleinen Gruppen ein Kryptosystem mit RSA zu entwickeln. Dafür haben wir die Caesar Verschlüsselung (Buchstaben um eine bestimmte Stelle im Alphabet verschieben) und das Rückwertsschreben uns angesehen.
unsere Idee ist folgende: Aufgabe -> uA gf ba e -> euAbagf -> Caeserverschlüsselung

Meine Frage ist jetzt: Wie bekomme ich es hin, dass ich immer nur zwei Buchstaben miteinander vertausche??

BBBIIITTTTTTEEE möglichst schnell antworten!! DDDAAANNNKKKEEE!!!
 

Lisa:)

Mitglied
Und wie mache ich das mit dem StringBuilder?? Welchen der Möglichkeiten rauche ich eigentlich für mein Problem?????:L
Sorry hab leider noch nicht so viel ahnung
 
Zuletzt bearbeitet:

socialcocer

Mitglied
Wie bereits gesagt, gibt es zum Einen den StringBuilder, zum Andererm könntest du dir ein char-Array holen und dann einfach mit einer for-schleife drüber laufen, oder oder...
Möglichkeiten gibt es da wirklich genügend. Such dir einen für dich verständlichen/ersichtlichen Lösungsweg heraus ;)
 
G

Gast2

Gast
Weil mir grade langweilig war...

Java:
	public static String reverse(String str){
		StringBuilder sb = new StringBuilder(str.length());
		for(int i = 0; i < str.length(); i += 2){
			int end = (i+2 < str.length()) ? i+2 : i+1;
			sb.append(new StringBuilder(str.substring(i,end)).reverse().toString());
		}
		return sb.toString();
	}
 

Lisa:)

Mitglied
ok danke an alle aber ich bin echt ein voll Fosten !! ich kriegs trotz eurer Hilfe nicht auf die reihe;(
Vielleicht könnt ihr mir ja in meinem code weiterhelfen??

Java:
 public String verschluessle(String eingabe, int schl) {
     String ausgabe = "";
    for(int a = eingabe.length() - 1; a >= 0; a--) {

      char buchstabe = eingabe.charAt(a);
      int zahl = (int) buchstabe;
      zahl = zahl +  schl;
      if (zahl > 126){
        zahl = zahl - 95;
      }
      char buchstabe2 = (char)zahl;
      ausgabe = ausgabe + buchstabe2;
     }

     return ausgabe;
   }

das ist mein code zum verschlüsseln bis jetztund ich weiß echt nicht wie ich weiter machen soll

ps: rauche tut mir leit sollte brauche werden:)
 

Andi_CH

Top Contributor
Glaub es endlich - noch mehr Lösung als du hier schon hast wird dir (hoffentlich!) niemand präsentieren!
Du sollst ja was lernen.
Ausserdem ist nicht klar was du willst. Was dein (ist es überhautp deiner?) Code machen soll auch nicht so wirklich da du weder beschreibst was er tun soll noch wo deiner Meinung nach ein Fehler ist.
 
U

uAgfbae

Gast
so kenne ich die Verschiebechiffre nicht, aber grundsätzlich zwei dinge werden von dir beschrieben:

Java:
/*        System.out.println(swap2(cipher(cipher(swap2("Hallo"), 5), -5))); */

    public static String swap2(String str) {
        char[] value = str.toCharArray();
        for (int i = 0; i < value.length - 1; i += 2) {
            char c = value[i];
            value[i] = value[i + 1];
            value[i + 1] = c;
        }
        return new String(value);
    }

    public static String cipher(String str, int c) {
        char[] value = str.toCharArray();
        for (int i = 0; i < value.length; i++) {
            value[i] += c;
        }
        return new String(value);
    }
 
U

uAgfbae

Gast
Java:
    public static String cipher(String str, int cnt) {
        char[] value = str.toCharArray();
        for (int i = 0; i < value.length; i++) {
            value[i] += cnt;
        }
        return new String(value);
    }

irgendwie wundere ich mich gerade, dass er in zeile 4 nicht possible loss of precision anzeigt. anscheinend wir zweimal implizit konvertiert: char -> int und int -> char. und wegen der "zweierkomplementivität" gibt es damit auch keine probleme oder? wer weiß das?
 

Andi_CH

Top Contributor
Siehe auch hier. Da wird gerade über dasselbe philosophiert.

Java:
        char c = 'a';
        c += 1;
        c = c + 1;
Zeile 2 ok
Zeile 3 Fehler
 

Neue Themen


Oben