• 26.04.2024, 22:14
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

Lieber Besucher, herzlich willkommen bei: Aqua Computer Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

[C++] Datei verschlüsseln

Montag, 26. Januar 2004, 21:05

Hi!

Wie kann ich es realisieren, dass eine Datei ver-/entschlüsselt wird. Ich möchte jedes Zeichen in einem Text bsp. im ASCII-Code um 13 bsp. erhöhen und dann wieder in die Datei schreiben. Beim Entschlüsseln ist das quasi das umgekehrte.

Wie kann ich das realisieren?

Ich hab schon folgendes, komme aber mit meinen Versuchen nicht weiter, daher nur das, was bestimmt richtig ist:

Quellcode

1
2
3
4
void encryptFile(CString fname)
{
      FILE * stream;
}


Btw: Wie kann man hier Tabulator einfügen (im Post)?

MfG
"I've always said, the Web is the sum of all human knowledge plus porn.", Ron Gilbert
UltraStar Manager 1.7.2 | Infos zu meinem PC | .o0 DeathSpank 0o.

Re: [C++] Datei verschlüsseln

Montag, 26. Januar 2004, 21:15

Quellcode

1
2
3
4
5
6
7
File *fp_r=fopen("bla.txt","r");
File *fp_w=fopen(alb.txt","w");
//dann mit fread oder fscanf einlesen
/vverschlüsseln
//mit fwrite oder fprintf schreiben
flcose(fp_r);
fclose(fp_w);


So sollte es grundsätzlich gehn. Zum Entschlüssen halt passend ändern.

CU Hurra

Re: [C++] Datei verschlüsseln

Montag, 26. Januar 2004, 21:45

Genau soweit war ich auch schon. Nur den Part mit fscanf und fprintf versteh ich ned und der Knackpunkt "verschlüsseln" fehlt aus ;)

MfG
"I've always said, the Web is the sum of all human knowledge plus porn.", Ron Gilbert
UltraStar Manager 1.7.2 | Infos zu meinem PC | .o0 DeathSpank 0o.

Re: [C++] Datei verschlüsseln

Montag, 26. Januar 2004, 21:55

na ma gugge was n gelanweiltes r1ppch3n unter schlafentzug noch so hinkricht... ;)

das sollte zb n zeichen verschlüsseln

Quellcode

1
2
3
4
5
char encrypt(char x) {
int y = x + 13;
if (y > 255) y -= 256;
return (char) y;
}

und so wieder zrück ;)

Quellcode

1
2
3
4
5
char decrypt(char x) {
int y = x - 13;
if (y < 0) y += 256;
return (char) y;
}


den rest mach doch bitte selber, mehr als n fgetc und fputc (liest bzw schreibt ein zeichen) an der richtgen stelle fehlt der ja eigentlich nimmer ;)

Re: [C++] Datei verschlüsseln

Montag, 26. Januar 2004, 22:00

hy
ist zwar kein c++ sondern nur c
und der dateiteil fehlt auch noch
aber die verschlüsselung sollte doch so in etwa sein oder?

guck mal hier:
http://beatrice.etechnik.fh-aachen.de/~s…bung_03-A04.pdf

gruß
Ö

Re: [C++] Datei verschlüsseln

Montag, 26. Januar 2004, 22:44

@r1ppch3n

Das einzige, was ich gesucht habe, fand ich bei deinem Post an letzter Stelle:

fgetc, fputc

THx.

MfG
"I've always said, the Web is the sum of all human knowledge plus porn.", Ron Gilbert
UltraStar Manager 1.7.2 | Infos zu meinem PC | .o0 DeathSpank 0o.

Re: [C++] Datei verschlüsseln

Montag, 26. Januar 2004, 22:53

Es geht einfach ned:

Quellcode

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
void encryptFile(CString fname)
{
      FILE * stream;
      CString text = "";
      char buffer[1];
      int  i, ch;


      /* Open file to read line from: */
    if( (stream = fopen( "C:\\test.txt", "r" )) == NULL )
            exit( 0 );

      
   ch = fgetc( stream );
   for( i=0; ( feof( stream ) == 0 ); i++ )
   {
      buffer[0] = (char)ch;
      ch = fgetc( stream );

        text = text + buffer;
   }

   fclose( stream );

   if( (stream = fopen( "C:\\test.txt", "w" )) == NULL )
            exit( 0 );
   
   for( i = 0; i < text.GetLen(); i++)
         fputc( text[i], stream );

   fclose( stream );
      
}


Aus:

Quellcode

1
Das ist ein Test!


wird nach ausführen:

Quellcode

1
DÌÌ̐ˆÀaÌÌÌÀ‡ÀsÌÌÌÀ‡À ÌÌÌ°‡ÀiÌÌÌ°‡ÀsÌÌÌ°‡ÀtÌÌÌ ‡À ÌÌÌ ‡ÀeÌÌ̐‡ÀiÌÌ̐‡ÀnÌÌÌ€‡À ÌÌÌ€‡ÀTÌÌÌp‡ÀeÌÌÌp‡ÀsÌÌÌp‡ÀtÌÌÌ`‡À!ÌÌÌ`‡À


Es müsste dasselbe wieder drinne stehen.

Mfg
"I've always said, the Web is the sum of all human knowledge plus porn.", Ron Gilbert
UltraStar Manager 1.7.2 | Infos zu meinem PC | .o0 DeathSpank 0o.

Re: [C++] Datei verschlüsseln

Dienstag, 27. Januar 2004, 00:38

Zitat

void encryptFile(CString fname)
{
FILE * stream;
CString text = "";
char buffer[1];
int i, ch;


/* Open file to read line from: */
if( (stream = fopen( "C:\\test.txt", "r" )) == NULL )
exit( 0 );


ch = fgetc( stream );
for( i=0; ( feof( stream ) == 0 ); i++ )
{
buffer[0] = (char)ch;
ch = fgetc( stream );

text = text + buffer[0];
}

fclose( stream );

if( (stream = fopen( "C:\\test.txt", "w" )) == NULL )
exit( 0 );

for( i = 0; i < text.GetLen(); i++)
fputc( text, stream );

fclose( stream );

}

Du hast beim Abfragen von "buffer" die Angabe des Offsets vergessen.

PS: Das Array ist eigentlich überflüssig, da du eh nur ein Zeichen zwischenspeichern willst.

Re: [C++] Datei verschlüsseln

Dienstag, 27. Januar 2004, 02:32

Mir kommt die for-schleife in der Mitte auch bisschen komisch vor.
ist das richtig dass da ==0 steht? müsste da nicht ==1 stehen?
weil die abbruchbedingung ist ja, dass feof TRUE liefert.

ich würd die for-schleife so schreiben (inkl. der zeile drüber):

Quellcode

1
2
3
4
while(!feof(stream))
{
   text += fgetc(stream);
}


So sparst Dir nämlich das überflüssige Array das eigentlich auch ein einzelnes char sein könnte gleich ganz ;)#

Hoff ich hab jetz kein Denkfehler, is ja scho spät  ::)
Vielleicht muss man noch was casten oder so.
C programmers never die. They are just cast into void. Neues moddingtech.de Portal online!

Re: [C++] Datei verschlüsseln

Dienstag, 27. Januar 2004, 03:55

hmm speicher den ascii wert in ne variable und er höh sie um 13 ganz einfach

jo und kleiner tipp leutz wenn ihr mit c++ proggt ladet euch easycase runter sollte freeware sein

dann könnt ihr ganz einfach per struktogramm proggen und müsst ned immer die schleifen eintippen

dazu wirds noch viel übersichtlicher da man direkt in die functionen rein kann und da die ganzen schleifen in struktogrammen sieht ;)
[CENTER][/CENTER]