Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Databyte

Alter Hase

  • »Databyte« ist der Autor dieses Themas

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

1

20.11.2007, 18:47

Verschlüsseln von Datei

Hallo

ich hab ein Programm ausgegraben ( uralt ), was nie richtig funktioniert
hat. Aber jetzt will ich es wieder herrichten.
Bei dem Programm ging es darum eine Datei anzugeben, sie einzulesen,
ein Passwort abzufragen und dann die Datei zu verschlüsseln.
Die verschlüsslung geht so:

Die Zeichen aus der Datei werden nacheinander mit denen aus dem
Passwort addiert. Das wars eigentlich auch schon. Ist zwar nicht sonderlich
sicher aber einfach.

Bis dahin hat es eigentlich auch funktioniert. Jedenfalls solange wie keine
Zeilenbrüche vorhanden waren, denn sonst kam beim entcoden
immer nur schrott raus.

Ich bin mir zu 99% sicher, dass es was mit windows-zeilenbrüchen zu
tun hat. aber ich kriegs einfach net hin. Ich hab irgendwie schon alles
versucht ( ok wahrscheinlich net :D ). :cry: :cry: :cry:


Naja ich hoffe ihr könnt mir Helfen. :)

Hier ist der Code ( hoffe is net zu lang )(is net besonders schön )

main.h

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Inigma C++



// includes


#include <iostream>
#include <fstream>

// namespace


using namespace std;

//Functionen

int Code(char *buffer, char *newBuffer);
int DeCode(char *buffer, char *newBuffer);

// Variablen

char Password[5];
long length;



main.cpp

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#include "main.h"


int main ()
{
    char input;
    char inputO = 0;
    char *buffer = NULL;
    char *newbuffer = NULL;
    char DateiName[50];
    ifstream in;
    ofstream out;

    cout << "Willkommen bei Inigma...\n\n";
    cout << "1:Verschluesseln\n2:Endschluesseln\n\n?";
    cin >> input;
    cin.ignore();

    cout << "\n\n\nDateiname (mit Pfad)\n";
    
    // Dateiname einlesen

    cin.get(DateiName, 49);
    cin.ignore();

    // Lade Datei

    in.open(DateiName, ios::binary);

    if (!in)
    {
        cout << "Fehler beim oeffnen der Datei!";
        cin.get();
        return 0;
    }

    cout << "\n\n\nBitte 4-stelliges Passwort eingeben!.\n";    
    
    // Passwort abfragen

    cin.get(Password,4);
    cin.ignore();

    in.seekg (0, ios::end);
    length = in.tellg();
    in.seekg (0, ios::beg);

    // Datei einlesen

    buffer = new char[length];
    newbuffer = new char[length];

    in.read(buffer,length);
    in.close();

    // Aktion

    if ( input == '1' )
        Code(buffer,newbuffer);
    else
        DeCode(buffer,newbuffer);


    cout << "\n\nSpeichern...";


    // Speichern

    out.open(DateiName, ios::trunc);
    if ( !out )
    {
        cout << "\n!!! nFehler beim speichern !!!"; 
    }

    out.write(newbuffer, length);
    cout << "\n\nAlles OK";
    cin.ignore();
    cin.get();
    return 0;
}

int Code (char *buffer, char *newBuffer)
{
    char add;
    int  index = 0;
    
    cout << "Sarte Verschluesslung\n...";

    for(long i = 0; i  < length; i++)
    {
            add = Password[index];
            index++;
            if (index == 4) index = 0;

            newBuffer[i] = static_cast<char>( buffer[i] ) + add;
    }
    cout << "\nVerschluesslung beendet";

    return 0;
}




int DeCode (char *buffer, char *newBuffer)
{
    char add;
    int index = 0;
    
    cout << "Sarte Eendschluesslung\n...";

    for(long i = 0; i  < length; i++)
    {
            add = Password[index];
            index++;
            if (index == 4) index = 0;

            newBuffer[i] = static_cast<char>( buffer[i] ) - add;
    }
    length;
    cout << "\nEndschluesslung beendet";

    return 0;
}

Sicaine

unregistriert

2

20.11.2007, 19:03

Debug doch einfach?

Databyte

Alter Hase

  • »Databyte« ist der Autor dieses Themas

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

3

20.11.2007, 19:53

Hmmm irgendwie hab ich es jetzt geschaft, dass er mir
in der DeCode-Funktion immer den Disassembly anzeigt...
Das will ich aber gar net. weiß da vieleicht irgendwas.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

20.11.2007, 20:15

Debugge den Debug-Build.

Databyte

Alter Hase

  • »Databyte« ist der Autor dieses Themas

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

5

20.11.2007, 20:22

Zitat

Debugge den Debug-Build


Öhhhhh ...... Ok... :D

Würd ich ja machen, aber wie ???

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

6

20.11.2007, 22:53

Per Haltepunkt, F10 und F11 :lol: oder was ist dein Problem?

Databyte

Alter Hase

  • »Databyte« ist der Autor dieses Themas

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

7

20.11.2007, 23:30

Also mein Problem grede ist, das wenn ich debuge und er auf einen
Haltepunkt trift, öffnet er ein weiteres "Blatt" mit der überschrift "Dissasembly" und darin stehen irgendwelche asm befehle.
Wie kann ich das wieder ausschalten, so dass er mir im "Normalen" Code
den Haltepunkt anzeigt und nich im dissasembler ?



Das eigentliche problem ist aber, dass das Programm meine angegebene Datei falsch
verschlüsselt, wenn darin Zeilenumbrüche vorhanden sind.

8

21.11.2007, 08:30

vermurlich gar nicht weil für manche Stellen kein Quellcode verfügbar ist!!

the live
my work is my passion

Nico

Frischling

Beiträge: 82

Wohnort: Nürnberg

  • Private Nachricht senden

9

21.11.2007, 09:17

Hast du deinem Compiler gesagt, dass er Debug-Informationen generieren soll?
lg

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

10

21.11.2007, 13:09

liegt das Problem vielleicht daran, dass du out ohne std::ios::binary öffnest?

Werbeanzeige