Programm zum verschlüsseln von einem text



  • ich habe ein Programm geschrieben, dass einen text verschlüsselt und mit einer txt datei wieder entschlüsselt. (auf partition x muss eine txt datei mit dem namen "schlüssel.txt" sein, man muss schon einmal verschlüsselt haben).
    man gibt eine zahl ein mit der verschlüsselt wird und dann wird eine zufallszahl erstellt. mit der wird dem buchstaben (als int variable) ein wert größer/gleich 1 und kleiner/gleich 26 zugewiesen. --> neue zufallszahl --> in die nächste variable --> und so weiter.

    Das Problem ist nun das entschlüsseln...
    ich verschlüssele mit 123 den text hallo mit der schlüssel datei auf partition c.
    Resultat: der text fivvr und eine menge zahlen in der txt.
    nun zum entschlüsseln:
    er tut die gespeicherten zahlen in a,b,c,d,e und so weiter
    Resultat:
    hhhhh
    ok h am anfang stimmt ja schon mal aber der rest ist nicht (h)allo !
    ich will das programm hier nicht als code reinschreiben, da es sehr groß ist. jedoch ist das zu überprpüfende in der stelle entschlüsseln nicht so groß und deshalb mute ich den netten helfern (schleim) hier mal zu sich das anzusehen (download link am ende des postings).
    ich komme einfach nicht darauf was denn nun so total falsch gelaufen ist.

    Download LINK: http://uploaded.to/?id=lcmh9q
    (Viren frei) 😕

    Ich danke allen, die sich es wenigstens mal angesehen haben.



  • Ich habe es mir mal Ansatzweiße durchgelesen. Was du noch unbedingt lernen musst, ist den Code Wartbar zu machen,d.h. auch mal Funktionen benutzen um manche Sachen auszulagern, eventuell auch Klassen mit reinspielen lassen(weiß jetzt nicht ob es in dem Anwendungsfall nötig ist, aber man kanns ja probieren). Versuch auch die STL zu benutzen, das einzige was ich bei dir gesehen habe war std::string und std::fstream. Ich bin mir sicher da lässt sich noch mehr aus der STL nutzen.



  • Hm, sieht alles unnoetig kompliziert aus - ausserdem ist der Code sehr schlecht lesbar.
    Dabei kann man einfache Verschluesselungen schon mit wenigen Zeilen Code erstellen, z.B. XOR, char-Werte manuell nach einem bestimmten Muster veraendern etc. etc.
    Ist in Schluessel denn nur das Passwort drin ode3r auch der gesamte Text?

    Gruss
    Cartman



  • der schlüssel speichert die von rand() "ausgesuchten" zahlen zum beispiel zum
    verschlüsselungsparameter 123:
    8
    12
    17
    9
    19
    23
    15
    24
    22

    und so weiter. wobei an stelle !!27!! (warum auch immer 27) das steht: 2368368 ???
    ich habe es jetzt etwas verändert an zeile 671:

    for (;size3 > 0;)
    {
        lines = 1;
        zeile = zeile + 1;
                file.open(fileName.c_str());
                if(file)
                {
                            string text; // Haupttext
                            int zeilen = 0;
                            while(!file.eof())
                            {
                                        string txt; // Buffer
                                        getline(file, txt);
                                        text = txt + "\n";
                                        zeilen++;
                                        if(zeile == zeilen) // gesuchte Zeile erreicht
                                        {
                                                   // cout << text;
                                                    break; // Zeile gefunden, Einlesen abbrechen
                                        }
                                        inhalt[lines] = text;
                            }
                            file.close();
    
                }
                else
                {
                            cout << "Fehler!";
                } //endelse
        partoser = partoser + 1;
        size3 = size3 - 1; 
        varb = 1;
        over = 0;
    
    if ((wholetext[0].substr((partoser-1),1))=="a") //überprüft ob buchstabe[stelle] a ist
    strm << inhalt[varb];
    strm >> over;
    strm.clear();
    {compint = over;}
    if ((wholetext[0].substr((partoser-1),1))=="b")
    strm << inhalt[varb];
    strm >> over;
    strm.clear();
    {compint = over;}
    if ((wholetext[0].substr((partoser-1),1))=="c")
    strm << inhalt[varb];
    strm >> over;
    strm.clear();
    {compint = over;}
    

    dann kommt aber schrott raus: hlqi

    sorry für den voreiligen post...
    mir ist aufgefallen, das ich nur aufzeigen lasse, was die zahlen in der txt für buchsatben wären ohne "fivvr" (den codierten text) in betracht zu ziehen.

    mir ist noch etwas aufgefallen:
    es war:

    if ((wholetext[0].substr((partoser-1),1))=="a") //überprüft ob buchstabe[stelle] a ist
    strm << inhalt[varb];
    strm >> over;
    strm.clear();
    {compint = over;}
    

    es muss aber das sein:

    if ((wholetext[0].substr((partoser-1),1))=="a") //überprüft ob buchstabe[stelle] a ist
    {strm << inhalt[varb];
    strm >> over;
    strm.clear();
    compint = over;}
    

Anmelden zum Antworten