Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Verschlüsselungsmethoden

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] [ 2 ] [ 3 ] > 4 <
030
03.11.2005, 14:19 Uhr
~erpel
Gast


Schade dass mir keiner helfen kann. Hab schon alles ausprobiert, irgendwas muss doch am enter komisch sein.
Gebt doch mal diesen überarbeiteten code bei euch ein.

C++:
#include <iostream.h>
#include <fstream.h>
#include <conio.h>

void verschluesselung();
void entschluesselung();

int main() //Standart-Auswahl Menü
{
    char auswahl;
         while (auswahl != 'b')
    {    
        system("cls");
        cout << "                 -Verschluesselungsprogramm-" << "\n\n\n\n\n";
        cout << "  [V] - Datei verschluesseln" << "\n";
        cout << "  [E] - Datei entschluesseln" << "\n";
        cout << "  [B] - Beenden" << "\n";

        auswahl=getch();
        
        switch (auswahl)
        {
            case 'v' : verschluesselung();  break;
             case 'e' : entschluesselung();  break;
        }
    }
    return 0;
}

void verschluesselung() //Verschluesselung der Datei
{
    char original, bild, pfad[256];
    int asci;
    
    system("cls");
    
    cout << "Pfad der zu verschluesselnden Datei eingeben: ";
    cin.getline(pfad,256);
    
    ifstream datei_l (pfad); //zum Lesen öffnen  
    ofstream datei_s (pfad,ios::in); //ohne ios::in wird datei überschrieben(trunc)
    datei_l.seekg(0); //hier die Anfangsposition einsetzen
    datei_s.seekp(0); //hier Anfangs-Schreibposition einsetzen
    
    datei_l.get(original); //erstes Zeichen holen  
    
    while ( datei_l.good())
    {        
        asci = original;
        if (asci > 128) asci = 256 + asci;
        asci += 13;
        bild = asci;
        datei_s << bild;
        datei_l.get(original); //Zeichen holen
    }
    datei_l.close();
    datei_s.close();
    getch();
}

void entschluesselung() //Entschluesselung der Datei
{
    char original, bild, pfad[256];
    int asci;
    
    system("cls");
    
    cout << "Pfad der zu entschluesselnden Datei eingeben: ";
    cin.getline(pfad,256);
    
    ifstream datei_l (pfad); //zum Lesen öffnen  
    ofstream datei_s (pfad,ios::in); //zum Schreiben öffnen
    datei_l.seekg(0); //hier die Anfangsposition einsetzen
    datei_s.seekp(0); //hier Anfangs-Schreibposition einsetzen
    
    datei_l.get(bild); //erstes Zeichen holen  
    
    while ( datei_l.good())
    {        
        asci = bild;
        if (asci > 128) asci = 256 + asci;
        asci -= 13;
        original = asci;
        datei_s << original;        
        datei_l.get(bild); //Zeichen holen
    }
    datei_l.close();
    datei_s.close();
    getch();
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
031
04.11.2005, 08:03 Uhr
~DoppleR
Gast


Nach ein paar kleinen Änderungen habe ich dein Programm nochmal durchlaufen lassen:

C++:
#include <iostream> //geändert
#include <fstream> //geändert
#include <limits> //geändert

void verschluesselung();
void entschluesselung();

int main() //Standart-Auswahl Menü
{
    using namespace std; //geändert
    char auswahl;
    while (auswahl != 'b')
    {    
        system("clear"); //geändert
        cout << "                 -Verschluesselungsprogramm-" << "\n\n\n\n\n";
        cout << "  [V] - Datei verschluesseln" << "\n";
        cout << "  [E] - Datei entschluesseln" << "\n";
        cout << "  [B] - Beenden" << "\n";

        cin >> auswahl; //geändert
    cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n'); //geändert
        
        switch (auswahl)
        {
            case 'v' : verschluesselung();  break;
        case 'e' : entschluesselung();  break;
        }
    }
    return 0;
}

void verschluesselung() //Verschluesselung der Datei
{
    using namespace std; //geändert
    char original, bild, pfad[256];
    int asci;
    
    system("clear"); //geändert
    
    cout << "Pfad der zu verschluesselnden Datei eingeben: ";
    cin.getline(pfad,256);
    
    ifstream datei_l (pfad); //zum Lesen öffnen  
    ofstream datei_s (pfad,ios::in); //ohne ios::in wird datei überschrieben(trunc)
    datei_l.seekg(0); //hier die Anfangsposition einsetzen
    datei_s.seekp(0); //hier Anfangs-Schreibposition einsetzen
    
    datei_l.get(original); //erstes Zeichen holen  
    
    while ( datei_l.good())
    {        
        asci = original;
        if (asci > 128) asci = 256 + asci;
        asci += 13;
        bild = asci;
        datei_s << bild;
        datei_l.get(original); //Zeichen holen
    }
    datei_l.close();
    datei_s.close();

    cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n'); //geändert
}

void entschluesselung() //Entschluesselung der Datei
{
    using namespace std; //geändert
    char original, bild, pfad[256];
    int asci;
    
    system("clear"); //geändert
    
    cout << "Pfad der zu entschluesselnden Datei eingeben: ";
    cin.getline(pfad,256);
    
    ifstream datei_l (pfad); //zum Lesen öffnen  
    ofstream datei_s (pfad,ios::in); //zum Schreiben öffnen
    datei_l.seekg(0); //hier die Anfangsposition einsetzen
    datei_s.seekp(0); //hier Anfangs-Schreibposition einsetzen
    
    datei_l.get(bild); //erstes Zeichen holen  
    
    while ( datei_l.good())
    {        
        asci = bild;
        if (asci > 128) asci = 256 + asci;
        asci -= 13;
        original = asci;
        datei_s << original;        
        datei_l.get(bild); //Zeichen holen
    }
    datei_l.close();
    datei_s.close();

    cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n'); //geändert
}


system("cls"); musste ich ändern, weil es bei mir kein cls gibt. conio.h habe ich nicht, daher habe ich die getch() durch standardkonforme Sachen ersetzt. Und ich habe statt iostream.h bzw. fstream.h iostream bzw. fstream eingebunden und dafür using namespace std; hingeschrieben, weil sonst bei mir eine Warnung wegen veralteter Header kommt.

Was das Programm macht, ist immernoch das gleiche wie in meinem letzten Post. Es funktioniert also tadellos. Wie sieht denn deine Ausgabedatei aus, wenn du

Code:
bla
bla


übersetzt? Und mit welchem Viewer siehst du sie dir an?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
032
04.11.2005, 09:13 Uhr
~erpel
Gast


verwende dev c++
und viewer? na das windows xp standart dos fenster.
Werde das Program mal übernehmen wenn ich zu hause bin.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
033
04.11.2005, 09:31 Uhr
~DoppleR
Gast


Entschuldige, ich hatte mich falsch ausgedrückt. Ich meinte, was steht in der Datei, wenn du

Code:
bla
bla


verschlüsselst? Und mit welchem Programm siehst du dir die Datei an?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
034
04.11.2005, 15:41 Uhr
~erpel
Gast


Sehe mir die Datei mit dem XP Editor an, und kompiliere mit dev c++ oder vC++ (ms)
Was bedeutet die Zeile:

C++:
cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');


ich hab ja extra getch(); genommen, um direkt bei tastendruck(ohne nach der auswahl enter zu drücken) ins jeweilige programm zu kommen. Welchen "neueren" befehl gibt es denn dafür? cin >> ; erwartet ja immer ein enter danach.
Also ok.
aus

Code:

bla
bla


wird ersmtal verschlüsselt:

Code:

oynoyna


^^hoffe er kann das Zeichen anzeigen und macht kein Zeilenumbruch draus. zwischen oyn und oyna ist so ein viereck...daran erkennt man ja schon, das da ein 'a' zuviel ist.
und entschlüsselt dann:

Code:

bla
blaT


Danke für deine Hilfe!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
035
04.11.2005, 15:56 Uhr
~erpel
Gast


Und warum geht das bei dir, und bei mir nicht? benutzt du linux?
Also wenn in der .txt nur ein Zeilenumbruch steht, macht er bei der verschlüssellung, 2 steuerzeichen draus! Das muss doch was damit zu tun haben. Es stehen dann 2 solcher^^ vierecke in der .txt! Und beim entschlüsseln nimmt er sich nur eins davon anscheinend.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
036
04.11.2005, 16:58 Uhr
predator




Zitat von ~erpel:
ich hab ja extra getch(); genommen, um direkt bei tastendruck(ohne nach der auswahl enter zu drücken) ins jeweilige programm zu kommen.

Das würde ich aber nicht machen. Es ist doch besser, wenn der Benutzer erst noch Enter drücken muss, bevor das Programm loslegt. Sonst kann sich der Benutzer nicht mehr korrigieren, wenn er sich z.B. vertippt hat...

Aber egal, zu deinem Problem:
Warum willst du es denn unbedingt mit dieser Methode machen?
Ein paar Seiten weiter vorne hat (un)wissender doch gezeigt, wie du die gesamte Datei in ein Array einlesen kannst. Dann brauchst du nur noch die Zeichen im Array verschlüsseln, und wieder in eine Datei schreiben.
--
Gruß
predator
Zitat von Edsger W. Dijkstra:
Es ist praktisch unmöglich, einem Studenten gutes Programmieren beizubringen, wenn er vorher in BASIC programmiert hat. Als potenzielle Programmierer sind sie geistig verstümmelt ohne Hoffnung auf Erholung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
037
04.11.2005, 18:45 Uhr
~DoppleR
Gast


Ich verwende getch() nur aus dem Grund nicht, weil ich conio.h nicht installiert habe. Wie man es sonst macht, nur eine Taste druecken zu muessen, weiss ich nicht, und damit es erstmal laeuft, habe ich es so gemacht.

Wenn man heute ein schoenes User-Interface programmieren will, sollte man vielleicht auch lieber ein grafisches verwenden.


C++:

cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');


ignoriert einfach alle Zeichen in cin bis zum naechsten '\n'.

Zum eigentlichen Problem kann ich jetzt aber leider nichts mehr sagen. Vielleicht haengt es damit zusammen, wie in Windows Textdateien gespeichert werden. Wie gesagt, bei mir unter Linux funktioniert es, und ich kenne Windows nicht gut.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
038
04.11.2005, 19:51 Uhr
~erpel
Gast


ok, danke für eure bemühungen.
Werd es nochmal anders probieren, und wenn nicht gibts ja noch viele andere sachen die man proggen kann...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] [ 2 ] [ 3 ] > 4 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: