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
Jazyk C - dekryptování zašifrovaných souborů?
- tomygo
- Začátečník

-
- Registrován: 16. říj 2004
- wexxa
- Nováček

-
- Registrován: 06. led 2008
- Bydliště: Náchod
- Kontaktovat uživatele:
skus http://builder.cz taky tam občas zajdu
)
- €agle
- Středně pokročilý

- Registrován: 13. lis 2003
- Bydliště: Vlastní 3D svět :)
- Kontaktovat uživatele:
Nechce se mi psat cely program, ale tady mas zakladni algoritmus, ty veci kolem jako ziskani nazvu souboru z parametru uz snad nejak zvladnes...
Jinak sifra je to primitivni, pouze pouzije bytovou reprezentaci daneho textu jako soustavu long cisel a jejich hodnotu zapise do souboru v ciselne podobe.
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);Eagle3D Engine under developement
Hledáme do firmy schopného ASP/VB.NET/C# programátora, více po SZ
Hledáme do firmy schopného ASP/VB.NET/C# programátora, více po SZ