Stránka 1 z 1

Jazyk C - dekryptování zašifrovaných souborů?

Napsal: ned 16. pro 2007, 11:25
od tomygo
Mám tenhle zdroják:

#include <stdlib>
#include <stdio>
#define POCET_CISEL 5
#define POCET_BAJTU sizeof(long)*POCET_CISEL

/* unie - kryptovani souboru */

union sifra
{
char text[POCET_BAJTU];
long cisla[POCET_CISEL];
};

void vypln(char *, int);

int main(int argc, char *argv[])
{
union sifra data;
FILE *uvstup, *uvystup;
int pocet, i;
char znak;
if(argc == 3)
{
uvystup = fopen(argv[2], "w");
if((uvstup = fopen(argv[1], "r")) != NULL)
{
pocet = 0;
vypln(data.text, POCET_BAJTU);
do
{
data.text[pocet++] = getc(uvstup);
if(feof(uvstup)) data.text[--pocet] = 0;
if((pocet == POCET_BAJTU) || feof(uvstup))
{
i = 0;
do
fprintf(uvystup, "%+15i", data.cisla[i++]);
while(i<POCET_CISEL);
fprintf(uvystup, "\n");
pocet = 0;
vypln(data.text, POCET_BAJTU);
}
}
while(!feof(uvstup));

fclose(uvstup);
fclose(uvystup);
}
}
else
printf("Chybny pocet parametru.\n");
system("PAUSE");
return 0;
}

void vypln(char *bajty, int pocet)
{
int i;
for(i=0; i<pocet; i++)
bajty = 0;
};


Tím zakryptuju nějaký texťák a potřebuju zase napsat tzv. opačný program, který zase ty zašifrovaný soubory zpátky rozšifruje... Ale musí to být pomocí unie a nějak to nemůžu dát dokupy... Nedáte to dohromady někdo, pokud máte chvíli? Díky

Napsal: čtv 27. pro 2007, 10:41
od tomygo
Nikdo nevíte? :(

Napsal: ned 6. led 2008, 09:52
od wexxa
skus http://builder.cz taky tam občas zajdu ;))

Napsal: čtv 10. led 2008, 19:13
od €agle
Nechce se mi psat cely program, ale tady mas zakladni algoritmus, ty veci kolem jako ziskani nazvu souboru z parametru uz snad nejak zvladnes...

Kód: Vybrat vše

    FILE* inFile = fopen("out.txt", "r"); //vstupni soubor
    FILE* outFile = fopen("out2.txt", "w"); //vystupni soubor
    union
    {
        long l; //kodove cislo
        char data[sizeof(long)+1]; //jeho textova reprezentace
    };
    char tmp[15]; //kazdy kod ve vstupu ma 15 znaku
    data[sizeof(long)] = 0; //ukonceni retezce
    while(!feof(inFile))
    {
        memset(tmp, 0, 15);
        fread(tmp, 15, 1, inFile); //nacteni kodu
        l = atol(tmp); //prevedeni na long
        fputs(data, outFile); //vypis do vystupu
    }
    fclose(inFile);
    fclose(outFile);
Jinak sifra je to primitivni, pouze pouzije bytovou reprezentaci daneho textu jako soustavu long cisel a jejich hodnotu zapise do souboru v ciselne podobe.