Jazyk C - dekryptování souborů??? – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Jazyk C - dekryptování souborů??? – C / C++ – Fórum – Programujte.comJazyk C - dekryptování souborů??? – C / C++ – Fórum – Programujte.com

 

ronaldinho1986
~ Anonymní uživatel
1 příspěvek
30. 12. 2007   #1
-
0
-

Potřeboval bych pomoc s jedním úkolem v jazyce C (viz. zdroják níže). Tímto zakryptuju nějaký soubor 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... Prý to je jednoduchý a během chvilky, ale asi jen pro toho, kdo to ovládá, tak snad tu někdo takový bude, byl bych vděčnej... Tady je 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[i] = 0;
};

Nahlásit jako SPAM
IP: 213.226.208.–
_k_
Duch
30. 12. 2007   #2
-
0
-

Nebolo treba tam toho vela menit, v podsate len nacitas cisla zo zasifrovaneho suboru do toho unionu do long cisla[] a vypisujes cez char text[].

#include <stdlib.h>

#include <stdio.h>
#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
{
fscanf(uvstup,"%i", &data.cisla[pocet++]);
if((pocet == POCET_CISEL) || feof(uvstup))
{
i = 0;
do
fprintf(uvystup, "%c", data.text[i++]);
while(i<POCET_BAJTU);
pocet = 0;
vypln(data.text, POCET_BAJTU);
}
}
while(!feof(uvstup));

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

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


A nabuduce svoj kod obal do tagu "code" a by to bolo citatelnejsie a zislo by sa aj trochu komentarov...

Nahlásit jako SPAM
IP: 195.91.54.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 108 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý