• 27.07.2025, 23:41
  • S’inscrire
  • Connexion
  • Vous n’êtes pas connecté.

 

Eumel

God

[C++] Datei verschlüsseln

lundi 26 janvier 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:

Code source

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

lundi 26 janvier 2004, 21:15

Code source

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

lundi 26 janvier 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.

r1ppch3n

Moderator

Re: [C++] Datei verschlüsseln

lundi 26 janvier 2004, 21:55

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

das sollte zb n zeichen verschlüsseln

Code source

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

Code source

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

lundi 26 janvier 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ß
Ö

Eumel

God

Re: [C++] Datei verschlüsseln

lundi 26 janvier 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.

Eumel

God

Re: [C++] Datei verschlüsseln

lundi 26 janvier 2004, 22:53

Es geht einfach ned:

Code source

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:

Code source

1
Das ist ein Test!


wird nach ausführen:

Code source

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

mardi 27 janvier 2004, 00:38

Citation

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

mardi 27 janvier 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):

Code source

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

mardi 27 janvier 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]