⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 This is a program with my school PWSZ city, maybe it s not great but it execute sorting buubble
💻 C
字号:
#include "moje.c"

int main(int argc, char *argv[])
                                                                                                            
{
                                                                                                            
	int i,j,tab_k[64],tab1_k[56],tab2_k[28],tab3_k[28],tab4_k[48];
	int tab1_t[64], tab2_t[32], tab3_t[32], tab4_t[48], tab_xor[48];
	int B1[6], B2[6], B3[6], B4[6], B5[6], B6[6], B7[6], B8[6];
	int y1[4], y2[4], y3[4], y4[4], y5[4], y6[4], y7[4], y8[4];
	int blok_P[32], tab_Ri[32];
	unsigned char klucz[8], sciezka1[12], sciezka2[12], tekst[8];
	FILE *plik_odczyt, *plik_zapis;
	char znak;
	long int ilosc,ilosc1;
	int x;

	system("CLS");//czyszczenie ekranu



	do
		{//wpisane klucza zgodnie z warunkiem klucz =8
		system("CLS");//czyszczenie ekranu


		printf("\n\n                  ---===SZYFROWANIE ALGORYTMEM DES===---\n\n\n\n");//naglowek

		printf("              Klucz musi miec 8 znakow\n\n\n");
printf("\n                       Podaj klucz (8 znakow): ");

gets(klucz);//wprowadzenie klucza
}while(strlen(klucz)!=8);//obliczenie dlugosci klucza i sprawdzenie warunku

system("CLS");//czyszczenie ekranu

printf("\n\t\tPodaj sciezke dostepu pliku zrodlowego: ");
gets(sciezka1);//podanie sciezki pliku ktory chcemy szyfrowac


plik_odczyt=fopen(sciezka1,"rb");//otwarcie pliku z mozliwoscia odczytu binarnie

	if(!plik_odczyt)//warunek jesli nastapilo niepoprawne otwracie
	{

	printf("\n\n\tBlad otwarcia pliku %s", sciezka1);//wyswietla komunikat o bledzie w otwarciu
	
	return (0);
	}


printf("\n\t\tPodaj sciezke dostepu pliku docelowego: ");//podanie sciezki pliku do zapisania zaszyfrowanych danych
gets(sciezka2);//podanie sciezki pliku do ktorego zapisujemy zaszyfrowane dane

plik_zapis=fopen(sciezka2,"wb");//otwarcie pliku z mozliwoscia zapisu

	if(!plik_zapis)//jesli nastapilo bledne otwarcie pliku
	{

	printf("\n\n\tBlad otwarcia pliku %s", sciezka2);//wyswietla komunikat o bledzie
	
	return (0);
	}


//************************
do{
system("CLS");//czyszcenie ekranu

printf("\n\n                 ---===SZYFROWANIE ALGORYTMEM DES===---\n\n\n\n");//naglowek

//wybor czynnosci ktora chcemy wykonac
printf("\n\n\t\t1 - szyfrowanie");

printf("\n\n\t\t2 - deszyfrowanie");

printf("\n\n\t\tq - wyjscie");

if(znak=='q'|| znak=='Q') //przerwanie dzialania pliku
return 0;
//wybor szyfrowania lub deszyfrowania
znak=getch();

}while(znak!='1' && znak!='2');//musi zostac podane 1 lub 2



system("CLS");//czyszczenie ekranu


if(znak=='1')//jesli wybor byl rowny 1(szyfrowanie)
{
ilosc=0;//licznik
	while(1)
	{

	 i=fgetc(plik_odczyt);//odczyt pojedynczysz znakow z pliku

	 if(i==EOF)//odczytuj dopoki plik zawiera jakies elementy
      break;//gdy i==EOF(brak elementow) przerwij

	 ++ilosc;//zwiekszenie licznika

	 }

ilosc%=8;//licznik jest rowny reszcie z dzielenia ilosc=ilosc/8

fclose(plik_odczyt);//zamkniecie pliku

plik_odczyt=fopen(sciezka1,"rb");//otwarcie pliku z mozliwoscia odczytu

fputc(ilosc,plik_zapis);//zapis dd pliku po szyfrowaniu licznika

system("CLS");//czyszczenie ekranu

printf("\n\n\t\tTrwa szyfrowanie. Prosze czekac...");//informacja o wykonywanej czynnosci
}


if(znak=='2')//jesli wybor jest rowny 2(deszyfrowanie)
{

ilosc1=0;//licznik

x=fgetc(plik_odczyt);//odczyt znaku

	while(1)
	{
	 x=fgetc(plik_odczyt);//odczyt pojedynczych znakow z pliku
	 if(x==EOF)//dziala dopoki w pliku znajduja sie jekies elementy
      break;//gdy x==EOF przerywa dzialanie
	 ++ilosc1;//zwiekszenie licznika
	}

fclose(plik_odczyt);//zamkniecie pliku

plik_odczyt=fopen(sciezka1,"rb");//otwarcie pliku

x=fgetc(plik_odczyt);//odczyt znaku

system("CLS");//czyszczenie ekranu

printf("\n\n\t\tTrwa deszyfrowanie. Prosze czekac...");//informacja o aktualnym dzialaniu programu

}



while(ilosc=(fread(tekst,sizeof(unsigned char),8,plik_odczyt)))//skopiowania do tablicy 8 elementow pliku plik_odczyt
{

binarny(klucz,tab_k);//wywolanie funkcji binarny, z parametrem klucz i tab_k

red_klucza(tab_k, tab1_k);//wywolanie funkcji red_klucza


for(i=0;i<28;i++)
tab2_k[i]=tab1_k[i];  //podzial klucza na dwa 8-bitowe bloki /blok nr1/


j=0;
for(i=28;i<56;i++)//podzial klucza na dwa 8-bitowe bloki /blok nr2/
{
tab3_k[j]=tab1_k[i];  
j++;
}


binarny(tekst,tab1_t);//wywolanie funkcji binarny

permutacja_pocz_tekstu(tab1_t);//wywolanie funkcji permtuacja_pocz_tekstu


	for(i=0;i<32;i++)//podzial na dwa 8 bitowe bloki (blok nr1)
	tab2_t[i]=tab1_t[i];  


	j=0;
	for(i=32;i<64;i++)//podzial na dwa 8 bitowe bloki (blok nr2)
	{
	tab3_t[j]=tab1_t[i];  
	j++;
	}


if(znak=='1')//wybor szyfrowania 
szyfrowanie(tab4_k, tab2_k, tab3_k, tab3_t, tab4_t, tab_xor, B1, B2, B3, B4, B5, B6, B7, B8, y1, y2, y3, y4, y5, y6, y7, y8, blok_P, tab_Ri, tab2_t);
//wywolanie funkcji szyfrujacej
if(znak=='2')//wybor deszyfrowania
deszyfrowanie(tab4_k, tab2_k, tab3_k, tab3_t, tab4_t, tab_xor, B1, B2, B3, B4, B5, B6, B7, B8, y1, y2, y3, y4, y5, y6, y7, y8, blok_P, tab_Ri, tab2_t);
//wywlanie funkcji deszyfrujacej
permutacja_kon_tekstu(tab1_t, tab3_t, tab2_t, tekst);//wywolanie funkcji permtuacji konca tekstu


if(znak=='2'&&ilosc1==ftell(plik_odczyt)-1&&x!=0)
{
fwrite(tekst,sizeof(char),x,plik_zapis);
break;
}
else fwrite(tekst,sizeof(char),8,plik_zapis);



if(ilosc!=8)//jesli ilosc rozna od 8
break;//przerwij

}



fclose(plik_odczyt);//zamkniecie pliku
fclose(plik_zapis);//zamkniecie pliku


return 0;
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -