• 26.07.2025, 11:06
  • Register
  • Login
  • You are not logged in.

 

Eumel

God

[C++] Datei verschlüsseln

Monday, January 26th 2004, 9:05pm

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:

Source code

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.

hurra

God

Re: [C++] Datei verschlüsseln

Monday, January 26th 2004, 9:15pm

Source code

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

Eumel

God

Re: [C++] Datei verschlüsseln

Monday, January 26th 2004, 9:45pm

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.

r1ppch3n

Moderator

Re: [C++] Datei verschlüsseln

Monday, January 26th 2004, 9:55pm

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

das sollte zb n zeichen verschlüsseln

Source code

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 ;)

Source code

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 ;)

Oetsch

God

Re: [C++] Datei verschlüsseln

Monday, January 26th 2004, 10:00pm

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ß
Ö

Eumel

God

Re: [C++] Datei verschlüsseln

Monday, January 26th 2004, 10:44pm

@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.

Eumel

God

Re: [C++] Datei verschlüsseln

Monday, January 26th 2004, 10:53pm

Es geht einfach ned:

Source code

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:

Source code

1
Das ist ein Test!


wird nach ausführen:

Source code

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.

PAB

God

Re: [C++] Datei verschlüsseln

Tuesday, January 27th 2004, 12:38am

Quoted

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.

TheJoker

God

Re: [C++] Datei verschlüsseln

Tuesday, January 27th 2004, 2:32am

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):

Source code

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!

mindheat

Senior Member

Re: [C++] Datei verschlüsseln

Tuesday, January 27th 2004, 3:55am

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]