C++ Text mit EXOR ver- und entschlüsseln



  • Hallo brauche dringend Hilfe bei folgender Aufgabe:
    Schreibe ein Programm, das den Text über ein Passwort, das aus bis zu 15 Buchstaben bestehen kann, verschlüsselt und wieder entschlüsselt.
    Es soll mit EXOR verschlüsselt werden.
    Folgendes Verfahren soll angewandt werden:
    Da der Text der normalerweise länger ist als das Passwort ist, soll so verschlüsselt werden, daß:
    Der erste Buchstabe des Textes mit dem ersten Buchstaben des Passwortes verschlüsselt wird.
    Der zweite mit dem zweiten u.s.w. . Da der Text länger als das Passwort ist,
    wird dabb der 15, Buchstabe des Textes wieder mit dem ersten Buchstaben des Passworts verschlüsselt.
    Um den jeweiligen Index zu berechnen, soll der Modulo Operator genutzt werden.
    Mann soll kein leeres Passwort oder leeren Text eingeben können, dann soll man zur Neueingabe aufgefordert werden.
    Für den gleichen, vorher verschlüsselten Text soll man auf Nachfrage immer noch mal ein Passwort versuchen dürfen.
    Zur Eingabe des Passwortes und Textes soll cin.getline benutzt werden.

    Hoffe ihr habt ein paar Tips für mich, komme irgendwie nicht zurande mit der Aufgaben.
    Danke Langis 🙄



  • ich hab mal ein programm geschrieben dass so verschluesselt
    (allerdings ohne die index-berechnung; das hab ich anders geloest).

    falls du es haben willst kannst du ja mal auf meiner seite schauen
    (die im moment allerdings down is 😮 ); zur not
    kann ich es dir ja per mail schicken.



  • Im grunde ganz einfach:
    Erstmal brauchen wir das Passwort als einzelne Char:

    char Pass[15];
    

    so jetzt benötigen wir den Text als einzelne chars. Ich geh mal davon aus, das der text als char* vorliegt. Wie man die Textlänge rauskriegt weiß ich nicht aber da wird dir schon was einfalen Und an den Text musst du noch soviele Leerzeichen dranhängen bis er durch 15 teilbar ist!

    char *inc;
    inc = new char[Textlänge] ;
    strcpy (inc, Klartext);
    

    so und jetzt noch das Verschlüsseln:

    for (int pos = 0;pos < Textlänge/15;pos++)
    {
    
     for (int i = 0;i<15;i++)
     {
      inc[i*(pos*15)] ^= Pass[i];
     } 
    }
    

    und jetzt noch zu guter letzt noch nen ausgabe char* herstellen

    char *out;
    strcpy(out,inc);
    

    so das wars wenn was unklar dann meld dich (zur info ^ist der xor-operator)



  • Sorrx, aber was lernt ihr denn im Untterricht, dass du Aufgabe nicht selbst lösen willst? Oder ist der Lehrer etwa schuld?


Anmelden zum Antworten