Hilfe bei Verschlüsselung



  • Genau wie bei einem array. Das Problem bei deinem string ist, dass er leer ist. Willst du jetzt auf ein nicht vorhandenes Element zugreifen, geht das natürlich nicht. Einfach das Zeichen mit push_back oder += anhängen oder so wie du es zuvor gemacht hast.


  • Mod

    andre16 schrieb:

    und verstehe ich das richtig? Wenn ich einen String habe, kann ich einfach an den Namen eine eckige Klammer dran setzen und somit auf den jeweiligen Zeichenplatz zugreifen?
    Sagen wir mal ich habe string name = "Bob";
    dann wäre bei name[0] = 'B' ? 😕

    Ja. Aber das geht natürlich nur, wenn es dieses Zeichen überhaupt gibt. Was hier das Problem ist: Denn result ist bei dir ein leerer String, du greifst aber fröhlich auf dessen vermeintlichen Inhalt zu. Häng die neuen Zeichen an (zum Beispiel mit push_back), anstatt zu versuchen, nicht existierende Zeichen zu verändern.



  • string encrypt(string text, string key)
    {
    	string result = text;
    
    	for (unsigned int i = 0; i < text.length();i++) {
    
    		result[i] = text[i] ^ key[i%key.length()];
    	}
    
    	return result;
    }
    

    So ich habe jetzt für result den text gesetzt. Push_back sagt mir jetzt gar nichts, ich würde gerne meine Lösung mit den Mitteln lösen, die wir bisher an der uni auch gelernt haben und das machen wir erst seit 2 Wochen.

    Jetzt bekomme ich nach der Eingabe aber nur irgendetwas unlesbares raus.
    Danke für eure Mühe 👍


  • Mod

    andre16 schrieb:

    Jetzt bekomme ich nach der Eingabe aber nur irgendetwas unlesbares raus.

    Soll das eine Problembeschreibung oder eine Erfolgsmeldung sein?



  • Problembeschreibung, also in der Konsole sehe ich dann nur noch Rechtecke als Ergebnis.


  • Mod

    andre16 schrieb:

    Problembeschreibung, also in der Konsole sehe ich dann nur noch Rechtecke als Ergebnis.

    Dir ist schon klar, was "Verschlüsselung" bedeutet, oder?



  • Zum testen kannst du deinen verschlüsselten Text ja wieder entschlüsseln. Bei deiner XOR Verschlüsselung ist das besonders einfach, da Verschlüsseln und Entschlüsseln genau das gleiche machen.



  • Ja klar, aber sagen wir mal ich gebe für Text = AAA ein und für key=jk ein, dann soll das Result doch AjAkAj sein?

    Ach Moment, die Ausgabe AjAkAj hääte ich nur mit dem '+' Operator bekommen, da ich XOR verwende wird das dann ja richtig verschlüsselt, also nicht mehr lesbar auf der Konsole oder?



  • Nein. Was wäre das denn für eine Verschlüsselung bei der einfach nur Zeichen eingefügt werden? Wie kommst du überhaupt auf sowas? Hast du dir mal angeschaut was XOR überhaupt macht?



  • Ja hab meinen Fehler jetzt auch schon entdeckt. Ne ich wusste nicht genau was der XOR-Operator macht, da wir das noch gar nicht besprochen hatten. Ich bin davon ausgegangen das wäre noch keine richtige Verschlüsselung, im Sinne von unlesbar, sondern nur eine Aufgabe um uns das Thema etwas näher zu bringen.

    Danke an alle für die Antworten.



  • andre16 schrieb:

    Ach Moment, die Ausgabe AjAkAj hääte ich nur mit dem '+' Operator bekommen

    Kommt drauf an wie man das '+' versteht. Wenn man es als Zusammenhängen versteht dann ja. Allerdings ist dies wenig interessant für eine Verschlüsselung. Man könnte es auch als Addieren der ASCII Werte verstehen. Dann hätte man sowas ähnliches wie die Cäsar-Chiffre, nur mit größerem Alphabet und mit unterschiedlicher Verschiebung pro Zeichen.



  • Bzw. die Cäsar-Chiffre mit unterschiedliche Verschiebung pro Zeichen wäre dann die Vigenère-Verschlüsselung.


Anmelden zum Antworten