brak bibliotek

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Awatar użytkownika
aceb
Sędziwy Jeż
Sędziwy Jeż
Posty: 38
Rejestracja: 15 maja 2008, 19:35
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

brak bibliotek

Post autor: aceb »

Witam.
Podczas kompilacji wyskakują mi błędy z którymi nie mogę sobie poradzić.
Czynność kompilacji programu nie daje programu wynikowego.
Program napisany w C.

Błędy to:

Kod: Zaznacz cały

/tmp/ccnNqR3K.o: In function `main':
des.c:(.text+0xaf): warning: the `gets' function is dangerous and should not be used.
des.c:(.text+0x1c): undefined reference to `clrscr'
des.c:(.text+0x30): undefined reference to `gotoxy'
des.c:(.text+0x51): undefined reference to `gotoxy'
des.c:(.text+0x72): undefined reference to `gotoxy'
des.c:(.text+0x93): undefined reference to `gotoxy'
des.c:(.text+0xcc): undefined reference to `clrscr'
des.c:(.text+0xe0): undefined reference to `gotoxy'
des.c:(.text+0x101): undefined reference to `gotoxy'
des.c:(.text+0x122): undefined reference to `gotoxy'
des.c:(.text+0x143): undefined reference to `gotoxy'
des.c:(.text+0x164): undefined reference to `gotoxy'
des.c:(.text+0x19d): undefined reference to `clrscr'
des.c:(.text+0x1b1): undefined reference to `gotoxy'
des.c:(.text+0x20a): undefined reference to `gotoxy'
des.c:(.text+0x22e): undefined reference to `delay'
des.c:(.text+0x24c): undefined reference to `gotoxy'
des.c:(.text+0x2a5): undefined reference to `gotoxy'
des.c:(.text+0x2c9): undefined reference to `delay'
des.c:(.text+0x2d8): undefined reference to `clrscr'
des.c:(.text+0x2ec): undefined reference to `gotoxy'
des.c:(.text+0x30d): undefined reference to `gotoxy'
des.c:(.text+0x32e): undefined reference to `gotoxy'
des.c:(.text+0x34f): undefined reference to `gotoxy'
des.c:(.text+0x370): undefined reference to `gotoxy'
/tmp/ccnNqR3K.o:des.c:(.text+0x391): more undefined references to `gotoxy' follow
/tmp/ccnNqR3K.o: In function `main':
des.c:(.text+0x3c1): undefined reference to `getch'
des.c:(.text+0x3e9): undefined reference to `clrscr'
des.c:(.text+0x3fd): undefined reference to `gotoxy'
des.c:(.text+0x41e): undefined reference to `gotoxy'
des.c:(.text+0x43f): undefined reference to `gotoxy'
des.c:(.text+0x460): undefined reference to `gotoxy'
des.c:(.text+0x481): undefined reference to `gotoxy'
/tmp/ccnNqR3K.o:des.c:(.text+0x4a2): more undefined references to `gotoxy' follow
/tmp/ccnNqR3K.o: In function `main':
des.c:(.text+0x4d2): undefined reference to `getch'
des.c:(.text+0x4f6): undefined reference to `clrscr'
des.c:(.text+0x59d): undefined reference to `clrscr'
des.c:(.text+0x5b1): undefined reference to `gotoxy'
des.c:(.text+0x665): undefined reference to `clrscr'
des.c:(.text+0x679): undefined reference to `gotoxy'
Ostatnio zmieniony 24 kwie 2011, 20:37 przez aceb, łącznie zmieniany 1 raz.
Awatar użytkownika
mario_7
Administrator
Administrator
Posty: 8614
Rejestracja: 30 sie 2006, 13:11
Płeć: Mężczyzna
Wersja Ubuntu: 20.04
Środowisko graficzne: GNOME
Architektura: x86_64

Re: Błąd kompilacji

Post autor: mario_7 »

Zmień tytuł tematu tak, aby w sposób możliwie precyzyjny przedstawiał sedno sprawy, w której piszesz. Miej na uwadze również zgodność z REGULAMINEM
Tytuł tematu zmienisz edytując pierwszy post
W razie wątpliwości/zastrzeżeń odnośnie powyższej informacji skontaktuj się z moderatorem, który ją wstawił.


Ponadto błędy wskazują na to, ze próbujesz użyć nieistniejących (niezdefiniowanych) funkcji. Wygląda to tak, jakbyś chciał skompilować windowsowy (DOS-owy) program konsolowy pod Linuksem. Zwróć uwagę, że wiele rzeczy działa tutaj inaczej i korzystanie z typowo windowsowych bibliotek i funkcji nie jest dobrym pomysłem.
Awatar użytkownika
aceb
Sędziwy Jeż
Sędziwy Jeż
Posty: 38
Rejestracja: 15 maja 2008, 19:35
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Re: brak bibliotek

Post autor: aceb »

problem rozwiązałem zmieniając kod

Kod: Zaznacz cały

getch()
na:

Kod: Zaznacz cały

scanf("%c",&znak);

Kod: Zaznacz cały

gotoxy()
na:

Kod: Zaznacz cały

void gotoxy(int x, int y) {
        char essq[100];         /* String variable to hold the escape sequence */
        char xstr[100];         /* Strings to hold the x and y coordinates */
        char ystr[100];         /* Escape sequences must be built with characters */

        /*
        ** Convert the screen coordinates to strings
        */
        sprintf(xstr, "%d", x);
        sprintf(ystr, "%d", y);

        /*
        ** Build the escape sequence (vertical move)
        */
        essq[0] = '\0';
        strcat(essq, "\033[");
        strcat(essq, ystr);

        /*
        ** Described in man terminfo as vpa=\E[%p1%dd
        ** Vertical position absolute
        */
        strcat(essq, "d");

        /*
        ** Horizontal move
        ** Horizontal position absolute
        */
        strcat(essq, "\033[");
        strcat(essq, xstr);
        /* Described in man terminfo as hpa=\E[%p1%dG */
        strcat(essq, "G");

        /*
        ** Execute the escape sequence
        ** This will move the cursor to x, y
        */
        printf("%s", essq);
}
Program się kompiluje, ale przy urochomieniu i podania danych wyskakuje błąd "Naruszenie ochrony pamięci"
Co może powodować ten błąd?

Kod programu głównego:

Kod: Zaznacz cały


#include <stdio.h>
#include <string.h>
#include <stdlib.h> // new
#include <ncurses.h> 


// funkcja na gotoxy przeznaczona na Ubuntu
void gotoxy(int x, int y) {
        char essq[100];		/* String variable to hold the escape sequence */
        char xstr[100];		/* Strings to hold the x and y coordinates */
        char ystr[100];		/* Escape sequences must be built with characters */

        /*
        ** Convert the screen coordinates to strings
        */
        sprintf(xstr, "%d", x);
        sprintf(ystr, "%d", y);

        /*
        ** Build the escape sequence (vertical move)
        */
        essq[0] = '\0';
        strcat(essq, "\033[");
        strcat(essq, ystr);

        /*
        ** Described in man terminfo as vpa=\E[%p1%dd
        ** Vertical position absolute
        */
        strcat(essq, "d");

        /*
        ** Horizontal move
        ** Horizontal position absolute
        */
        strcat(essq, "\033[");
        strcat(essq, xstr);
        /* Described in man terminfo as hpa=\E[%p1%dG */
        strcat(essq, "G");

        /*
        ** Execute the escape sequence
        ** This will move the cursor to x, y
        */
        printf("%s", essq);
}




int main()                                                                                                             
{
int binarny(char *napis, int *tab_x); // bylo unsigned char *napis, int *tab_x
int red_klucza(int *tab_k, int *tab1_k);
int przesuw_klucza(int *tabx_k, int i);
int permutacja_klucza(int *tab2_k, int *tab3_k, int *tab4_k);
int szyfrowanie(int *tab4_k, int *tab2_k, int *tab3_k, int *tab3_t, int *tab4_t, int *tab_xor, int *B1, int *B2, int *B3, int *B4, int *B5, int *B6, int *B7, int *B8, int *y1, int *y2, int *y3, int *y4, int *y5, int *y6, int *y7, int *y8, int *blok_P, int *tab_Ri, int *tab2_t);
int deszyfrowanie(int *tab4_k, int *tab2_k, int *tab3_k, int *tab3_t, int *tab4_t, int *tab_xor, int *B1, int *B2, int *B3, int *B4, int *B5, int *B6, int *B7, int *B8, int *y1, int *y2, int *y3, int *y4, int *y5, int *y6, int *y7, int *y8, int *blok_P, int *tab_Ri, int *tab2_t);
int permutacja_pocz_tekstu(int *tab1_t);
int rozszerzanie_Ro(int *tab3_t, int *tab4_t);
int xor(int *tab4_t, int *tab4_k, int *tab_xor);
int zamiana_na_bloki(int *tab_xor, int *B1, int *B2, int *B3, int *B4, int *B5, int *B6, int *B7, int *B8);
int S1(int *B1, int *y1);
int S2(int *B2, int *y2);
int S3(int *B3, int *y3);
int S4(int *B4, int *y4);
int S5(int *B5, int *y5);
int S6(int *B6, int *y6);
int S7(int *B7, int *y7);
int S8(int *B8, int *y8);
int binarny_krotki(int liczba, int *tab_y);
int laczenie_y(int *y1, int *y2, int *y3, int *y4, int *y5, int *y6, int *y7, int *y8, int *blok_P);
int permutacja_P_bloku(int *blok_P);
int xor_koncowe(int *tab_Ri, int *tab2_t, int *blok_P);
int permutacja_kon_tekstu(int *tab1_t, int *tab3_t, int *tab2_t, char *tekst);
int przesuw_klucza_p(int *tabx_k, int i);


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];
char klucz[8], sciezka1[12], sciezka2[12], tekst[8]; // bylo unsigned char "zmienne"
FILE *plik_odczyt, *plik_zapis;
char znak;
long int ilosc,ilosc1;
int x;

system("clear"); //clears the screen
// clrscr();

gotoxy(21,2);
printf("SZYFROWANIE ALGORYTMEM DES");
gotoxy(20,20);
printf("by aaaaaaaaaaaaaaaaaaaaaaaa");
gotoxy(20,22);
printf("aaaaaaaaaaaaaaaaaaaaaaa");
gotoxy(18,12);
printf("Podaj klucz (8 znakow): ");
gets(klucz);

if(strlen(klucz)!=8)
do{

system("clear"); //clears the screen
// clrscr();

gotoxy(21,2);
printf("SZYFROWANIE ALGORYTMEM DES");
gotoxy(20,20);
printf("by aaaaaaaaaaaaaaaaa");
gotoxy(20,22);
printf("aaaaaaaaaaaaaaaaaaaaaaaaaaaa");
gotoxy(22,16);
printf("Klucz musi miec 8 znakow");
gotoxy(18,12);
printf("Podaj klucz (8 znakow): ");
gets(klucz);
}
 while(strlen(klucz)!=8);

system("clear"); //clears the screen
// clrscr();

gotoxy(10,12);
printf("Podaj sciezke dostepu pliku zrodlowego: ");
gets(sciezka1);


plik_odczyt=fopen(sciezka1,"rb");

	if(!plik_odczyt)
	{
	gotoxy(26,14);
	printf("Blad otwarcia pliku %s", sciezka1);
	//delay(2000);
	return (0);
	}

gotoxy(10,16);
printf("Podaj sciezke dostepu pliku docelowego: ");
gets(sciezka2);

plik_zapis=fopen(sciezka2,"wb");

	if(!plik_zapis)
	{
	gotoxy(26,18);
	printf("Blad otwarcia pliku %s", sciezka2);
	//delay(2000);
	return (0);
	}


//************************

system("clear"); //clears the screen
// clrscr();

gotoxy(21,2);
printf("SZYFROWANIE ALGORYTMEM DES");
gotoxy(20,20);
printf("by aaaaaaaaaaaaaaaaaaa");
gotoxy(20,22);
printf("aaaaaaaaaaaaaaaaaaaaa");
gotoxy(20,12);
printf("1 - szyfrowanie");
gotoxy(20,14);
printf("2 - deszyfrowanie");
gotoxy(20,16);
printf("q - wyjscie");

if(znak=='q'|| znak=='Q') return 0;

scanf("%c", &znak);
// znak=getch();

if(znak!='1'&&znak!='2')

do{

system("clear"); //clears the screen
// clrscr();

gotoxy(21,2);
printf("SZYFROWANIE ALGORYTMEM DES");
gotoxy(20,20);
printf("by aaaaaaaaaaaaaaaaa");
gotoxy(20,22);
printf("aaaaaaaaaaaaaaaaaaaaaaaaaaaa");
gotoxy(20,12);
printf("1 - szyfrowanie");
gotoxy(20,14);
printf("2 - deszyfrowanie");
gotoxy(20,16);
printf("q - wyjscie");

if(znak=='q'|| znak=='Q') return 0;

scanf("%c", &znak);
// znak=getch();

}while(znak!='1' && znak!='2');

system("clear"); //clears the screen
// clrscr();


if(znak=='1')
{
ilosc=0;
	while(1)
	{

	 i=fgetc(plik_odczyt);

	 if(i==EOF) break;

	 ++ilosc;

	 }

ilosc%=8;

fclose(plik_odczyt);

plik_odczyt=fopen(sciezka1,"rb");

fputc(ilosc,plik_zapis);

system("clear"); //clears the screen
// clrscr();

gotoxy(20,10);
printf("Trwa szyfrowanie. Prosze czekac...");
}


if(znak=='2')
{

ilosc1=0;

x=fgetc(plik_odczyt);

	while(1)
	{
	 x=fgetc(plik_odczyt);
	 if(x==EOF) break;
	 ++ilosc1;
	}

fclose(plik_odczyt);

plik_odczyt=fopen(sciezka1,"rb");

x=fgetc(plik_odczyt);

system("clear"); //clears the screen
// clrscr();

gotoxy(20,10);
printf("Trwa deszyfrowanie. Prosze czekac...");

}



while(ilosc=(fread(tekst,sizeof(unsigned char),8,plik_odczyt)))
{

binarny(klucz,tab_k);

red_klucza(tab_k, tab1_k);


for(i=0;i<28;i++)
tab2_k[i]=tab1_k[i];  //Co


j=0;
for(i=28;i<56;i++)
{
tab3_k[j]=tab1_k[i];  //Do
j++;
}


binarny(tekst,tab1_t);

permutacja_pocz_tekstu(tab1_t);


	for(i=0;i<32;i++)
	tab2_t[i]=tab1_t[i];  //Lo


	j=0;
	for(i=32;i<64;i++)
	{
	tab3_t[j]=tab1_t[i];  //Ro
	j++;
	}


if(znak=='1') 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);
if(znak=='2') 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);

permutacja_kon_tekstu(tab1_t, tab3_t, tab2_t, tekst);


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

}



fclose(plik_odczyt);
fclose(plik_zapis);


return 0;
}


int binarny(char *napis, int *tab_x)
{
int licznik,liczba,reszta,i,j,tab_pom[64];

licznik=0;

for(i=0;i<8;i++)
{
liczba=napis[i];

        for(j=0;j<8;j++)
        {
	reszta=liczba%2;  //zamiana znaku na kod binarny
	liczba=liczba/2;

	tab_pom[licznik]=reszta;
	licznik++;
	}
}

j=7;
liczba=7;
licznik=0;

for(i=0;i<64;i++)
{
tab_x[j]=tab_pom[i];    //zamiana z konca na poczatek
licznik++;
	if(licznik==8)
	{
	licznik=0;
	liczba+=8;
	j=liczba+1;
	}
j--;
}

return 0;
}


int red_klucza(int *tab_k, int *tab1_k)
{
tab1_k[0]=tab_k[56];  tab1_k[1]=tab_k[48];  tab1_k[2]=tab_k[40];  tab1_k[3]=tab_k[32];  tab1_k[4]=tab_k[24];  tab1_k[5]=tab_k[16];  tab1_k[6]=tab_k[8];
tab1_k[7]=tab_k[0];   tab1_k[8]=tab_k[57];  tab1_k[9]=tab_k[49];  tab1_k[10]=tab_k[41]; tab1_k[11]=tab_k[33]; tab1_k[12]=tab_k[25]; tab1_k[13]=tab_k[17];
tab1_k[14]=tab_k[9];  tab1_k[15]=tab_k[1];  tab1_k[16]=tab_k[58]; tab1_k[17]=tab_k[50]; tab1_k[18]=tab_k[42]; tab1_k[19]=tab_k[34]; tab1_k[20]=tab_k[26];
tab1_k[21]=tab_k[18]; tab1_k[22]=tab_k[10]; tab1_k[23]=tab_k[2];  tab1_k[24]=tab_k[59]; tab1_k[25]=tab_k[51]; tab1_k[26]=tab_k[43]; tab1_k[27]=tab_k[35];
tab1_k[28]=tab_k[62]; tab1_k[29]=tab_k[54]; tab1_k[30]=tab_k[46]; tab1_k[31]=tab_k[38]; tab1_k[32]=tab_k[30]; tab1_k[33]=tab_k[22]; tab1_k[34]=tab_k[14];
tab1_k[35]=tab_k[6];  tab1_k[36]=tab_k[61]; tab1_k[37]=tab_k[53]; tab1_k[38]=tab_k[45]; tab1_k[39]=tab_k[37]; tab1_k[40]=tab_k[29]; tab1_k[41]=tab_k[21];
tab1_k[42]=tab_k[13]; tab1_k[43]=tab_k[5];  tab1_k[44]=tab_k[60]; tab1_k[45]=tab_k[52]; tab1_k[46]=tab_k[44]; tab1_k[47]=tab_k[36]; tab1_k[48]=tab_k[28];
tab1_k[49]=tab_k[20]; tab1_k[50]=tab_k[12]; tab1_k[51]=tab_k[4];  tab1_k[52]=tab_k[27]; tab1_k[53]=tab_k[19]; tab1_k[54]=tab_k[11]; tab1_k[55]=tab_k[3];

return 0;
}


int przesuw_klucza(int *tabx_k, int i)
{
int j,x,l,buf;

if(i==1||i==2||i==9||i==16)x=1;
else x=2;

for(j=1;j<=x;j++)
{
buf=tabx_k[0];

	for(l=0;l<27;l++)
	tabx_k[l]=tabx_k[l+1];

tabx_k[27]=buf;

}

return 0;
}

int przesuw_klucza_p(int *tabx_k, int i)
{
int j,x,l,buf;

if(i==1||i==2||i==9||i==16)x=1;
else x=2;

for(j=1;j<=x;j++)
{
buf=tabx_k[27];

	for(l=27;l>0;l--)
	tabx_k[l]=tabx_k[l-1];

tabx_k[0]=buf;

}

return 0;
}




int permutacja_klucza(int *tab2_k, int *tab3_k, int *tab4_k)
{
int i,j,tab_pom[56];

	for(i=0;i<28;i++)
	tab_pom[i]=tab2_k[i];
j=28;
        for(i=0;i<28;i++)
	{
	tab_pom[j]=tab3_k[i];
	j++;
	}

tab4_k[0]=tab_pom[13];  tab4_k[1]=tab_pom[16];  tab4_k[2]=tab_pom[10];  tab4_k[3]=tab_pom[23];  tab4_k[4]=tab_pom[0];   tab4_k[5]=tab_pom[4];   tab4_k[6]=tab_pom[2];   tab4_k[7]=tab_pom[27];
tab4_k[8]=tab_pom[14];  tab4_k[9]=tab_pom[5];   tab4_k[10]=tab_pom[20]; tab4_k[11]=tab_pom[9];  tab4_k[12]=tab_pom[22]; tab4_k[13]=tab_pom[18]; tab4_k[14]=tab_pom[11]; tab4_k[15]=tab_pom[3];
tab4_k[16]=tab_pom[25]; tab4_k[17]=tab_pom[7];  tab4_k[18]=tab_pom[15]; tab4_k[19]=tab_pom[6];  tab4_k[20]=tab_pom[26]; tab4_k[21]=tab_pom[19]; tab4_k[22]=tab_pom[12]; tab4_k[23]=tab_pom[1];
tab4_k[24]=tab_pom[40]; tab4_k[25]=tab_pom[51]; tab4_k[26]=tab_pom[30]; tab4_k[27]=tab_pom[36]; tab4_k[28]=tab_pom[46]; tab4_k[29]=tab_pom[54]; tab4_k[30]=tab_pom[29]; tab4_k[31]=tab_pom[39];
tab4_k[32]=tab_pom[50]; tab4_k[33]=tab_pom[44]; tab4_k[34]=tab_pom[32]; tab4_k[35]=tab_pom[47]; tab4_k[36]=tab_pom[43]; tab4_k[37]=tab_pom[48]; tab4_k[38]=tab_pom[38]; tab4_k[39]=tab_pom[55];
tab4_k[40]=tab_pom[33]; tab4_k[41]=tab_pom[52]; tab4_k[42]=tab_pom[45]; tab4_k[43]=tab_pom[41]; tab4_k[44]=tab_pom[49]; tab4_k[45]=tab_pom[35]; tab4_k[46]=tab_pom[28]; tab4_k[47]=tab_pom[31];

return 0;
}

int rozszerzanie_Ro(int *tab3_t, int *tab4_t)
{

tab4_t[0]=tab3_t[31];  tab4_t[1]=tab3_t[0];   tab4_t[2]=tab3_t[1];   tab4_t[3]=tab3_t[2];   tab4_t[4]=tab3_t[3];   tab4_t[5]=tab3_t[4];
tab4_t[6]=tab3_t[3];   tab4_t[7]=tab3_t[4];   tab4_t[8]=tab3_t[5];   tab4_t[9]=tab3_t[6];   tab4_t[10]=tab3_t[7];  tab4_t[11]=tab3_t[8];
tab4_t[12]=tab3_t[7];  tab4_t[13]=tab3_t[8];  tab4_t[14]=tab3_t[9];  tab4_t[15]=tab3_t[10]; tab4_t[16]=tab3_t[11]; tab4_t[17]=tab3_t[12];
tab4_t[18]=tab3_t[11]; tab4_t[19]=tab3_t[12]; tab4_t[20]=tab3_t[13]; tab4_t[21]=tab3_t[14]; tab4_t[22]=tab3_t[15]; tab4_t[23]=tab3_t[16];
tab4_t[24]=tab3_t[15]; tab4_t[25]=tab3_t[16]; tab4_t[26]=tab3_t[17]; tab4_t[27]=tab3_t[18]; tab4_t[28]=tab3_t[19]; tab4_t[29]=tab3_t[20];
tab4_t[30]=tab3_t[19]; tab4_t[31]=tab3_t[20]; tab4_t[32]=tab3_t[21]; tab4_t[33]=tab3_t[22]; tab4_t[34]=tab3_t[23]; tab4_t[35]=tab3_t[24];
tab4_t[36]=tab3_t[23]; tab4_t[37]=tab3_t[24]; tab4_t[38]=tab3_t[25]; tab4_t[39]=tab3_t[26]; tab4_t[40]=tab3_t[27]; tab4_t[41]=tab3_t[28];
tab4_t[42]=tab3_t[27]; tab4_t[43]=tab3_t[28]; tab4_t[44]=tab3_t[29]; tab4_t[45]=tab3_t[30]; tab4_t[46]=tab3_t[31]; tab4_t[47]=tab3_t[0];

return 0;
}

int zamiana_na_bloki(int *tab_xor, int *B1, int *B2, int *B3, int *B4, int *B5, int *B6, int *B7, int *B8)
{
int i,j;

	for(i=0;i<6;i++)
	B1[i]=tab_xor[i];

j=0;
	for(i=6;i<12;i++)
        {
	B2[j]=tab_xor[i];
	j++;
	}

j=0;
	for(i=12;i<18;i++)
        {
	B3[j]=tab_xor[i];
	j++;
	}

j=0;
	for(i=18;i<24;i++)
        {
	B4[j]=tab_xor[i];
	j++;
	}

j=0;
	for(i=24;i<30;i++)
        {
	B5[j]=tab_xor[i];
	j++;
	}

j=0;
	for(i=30;i<36;i++)
        {
	B6[j]=tab_xor[i];
	j++;
	}

j=0;
	for(i=36;i<42;i++)
        {
	B7[j]=tab_xor[i];
	j++;
	}

j=0;
	for(i=42;i<48;i++)
        {
	B8[j]=tab_xor[i];
	j++;
	}

return 0;
}


int binarny_krotki(int liczba, int *tab_y)
{
int reszta,i, j, tab_pom[4];

	for(i=0;i<4;i++)
	{
	reszta=liczba%2;  //zamiana znaku na kod binarny
	liczba=liczba/2;

	tab_pom[i]=reszta;
	}

j=3;

	for(i=0;i<4;i++)
	{
	tab_y[j]=tab_pom[i];    //zamiana z konca na poczatek
	j--;
	}

return 0;
}



int S1(int *B1, int *y1)
{
int kolumna, wiersz, liczba;
int S_1[4][16]={ {14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7},{0,15,7,4,14,2,13,1,10,6,12,11,9,5,3,8},{4,1,14,8,13,6,2,11,15,12,9,7,3,10,5,0},{15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13} };

wiersz=2*B1[0]+B1[5];
kolumna=8*B1[1]+4*B1[2]+2*B1[3]+B1[4];

liczba=S_1[wiersz][kolumna];

binarny_krotki(liczba, y1);

return 0;
}


int S2(int *B2, int *y2)
{
int  liczba, kolumna, wiersz;
int S_2[4][16]={ {15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10},{3,13,4,7,15,2,8,14,12,0,1,10,6,9,11,5},{0,14,7,11,10,4,13,1,5,8,12,6,9,3,2,15},{13,8,10,1,3,15,4,2,11,6,7,12,0,5,14,9} };

wiersz=2*B2[0]+B2[5];
kolumna=8*B2[1]+4*B2[2]+2*B2[3]+B2[4];

liczba=S_2[wiersz][kolumna];

binarny_krotki(liczba, y2);

return 0;
}


int S3(int *B3, int *y3)
{
int liczba, kolumna, wiersz;
int S_3[4][16]={ {10,0,9,14,6,3,15,5,1,13,12,7,11,4,2,8}, {13,7,0,9,3,4,6,10,2,8,5,14,12,11,15,1}, {13,6,4,9,8,15,3,0,11,1,2,12,5,10,14,7}, {1,10,13,0,6,9,8,7,4,15,14,3,11,5,2,12}};

wiersz=2*B3[0]+B3[5];
kolumna=8*B3[1]+4*B3[2]+2*B3[3]+B3[4];

liczba=S_3[wiersz][kolumna];

binarny_krotki(liczba, y3);

return 0;
}


int S4(int *B4, int *y4)
{
int liczba, kolumna, wiersz;
int S_4[4][16]={ {7,13,14,3,0,6,9,10,1,2,8,5,11,12,4,5},{13,8,11,5,6,15,0,3,4,7,2,12,1,10,14,9},{10,6,9,0,12,11,7,13,15,1,3,14,5,2,8,4},{3,15,0,6,10,1,13,8,9,4,5,11,12,7,2,14} };

wiersz=2*B4[0]+B4[5];
kolumna=8*B4[1]+4*B4[2]+2*B4[3]+B4[4];

liczba=S_4[wiersz][kolumna];

binarny_krotki(liczba, y4);

return 0;
}

int S5(int *B5, int *y5)
{
int liczba, kolumna, wiersz;
int S_5[4][16]={ {2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9},{14,11,2,12,4,7,13,1,5,0,15,10,3,9,8,6},{4,2,1,11,10,13,7,8,15,9,12,5,6,3,0,14},{11,8,12,7,1,14,2,13,6,15,0,9,10,4,5,3} };

wiersz=2*B5[0]+B5[5];
kolumna=8*B5[1]+4*B5[2]+2*B5[3]+B5[4];

liczba=S_5[wiersz][kolumna];

binarny_krotki(liczba, y5);

return 0;
}

int S6(int *B6, int *y6)
{
int liczba, kolumna, wiersz;
int S_6[4][16]={ {12,1,10,15,9,2,6,8,0,13,3,4,14,7,5,11},{10,15,4,2,7,12,9,5,6,1,13,14,0,11,3,8},{9,14,15,5,2,8,12,3,7,0,4,10,1,13,11,6},{4,3,2,12,9,5,15,10,11,14,1,7,6,0,8,13} };

wiersz=2*B6[0]+B6[5];
kolumna=8*B6[1]+4*B6[2]+2*B6[3]+B6[4];

liczba=S_6[wiersz][kolumna];

binarny_krotki(liczba, y6);

return 0;
}

int S7(int *B7, int *y7)
{
int liczba, kolumna, wiersz;
int S_7[4][16]={ {4,11,2,14,15,0,8,13,3,12,9,7,5,10,6,1},{13,0,11,7,4,9,1,10,14,3,5,12,2,15,8,6},{1,4,11,13,12,3,7,14,10,15,6,8,0,5,9,2},{6,11,13,8,1,4,10,7,9,5,0,15,14,2,3,12} };

wiersz=2*B7[0]+B7[5];
kolumna=8*B7[1]+4*B7[2]+2*B7[3]+B7[4];

liczba=S_7[wiersz][kolumna];

binarny_krotki(liczba, y7);

return 0;
}


int S8(int *B8, int *y8)
{
int liczba, kolumna, wiersz;
int S_8[4][16]={ {13,2,8,4,6,15,11,1,10,9,3,14,5,0,12,7},{1,15,13,8,10,3,7,4,12,5,6,11,0,14,9,2},{7,11,4,1,9,12,14,2,0,6,10,13,15,3,5,8},{2,1,14,7,4,10,8,13,15,12,9,0,3,5,6,11} };

wiersz=2*B8[0]+B8[5];
kolumna=8*B8[1]+4*B8[2]+2*B8[3]+B8[4];

liczba=S_8[wiersz][kolumna];

binarny_krotki(liczba, y8);

return 0;
}

int laczenie_y(int *y1, int *y2, int *y3, int *y4, int *y5, int *y6, int *y7, int *y8, int *blok_P)
{
int i,j;

	for(i=0; i<4; i++)
	blok_P[i]=y1[i];
j=4;

	for(i=0; i<4; i++)
	{
	blok_P[j]=y2[i];
	j++;
	}

j=8;

	for(i=0; i<4; i++)
	{
	blok_P[j]=y3[i];
	j++;
	}

j=12;

	for(i=0; i<4; i++)
	{
	blok_P[j]=y4[i];
	j++;
	}

j=16;

	for(i=0; i<4; i++)
	{
	blok_P[j]=y5[i];
	j++;
	}

j=20;

	for(i=0; i<4; i++)
	{
	blok_P[j]=y6[i];
	j++;
	}

j=24;

	for(i=0; i<4; i++)
	{
	blok_P[j]=y7[i];
	j++;
	}

j=28;

	for(i=0; i<4; i++)
	{
	blok_P[j]=y8[i];
	j++;
	}


return 0;
}

int permutacja_P_bloku(int *blok_P)
{
int pom[32], i;

	for(i=0; i<32; i++)
	  pom[i]=blok_P[i];

blok_P[0]=pom[15];  blok_P[1]=pom[6];   blok_P[2]=pom[19];  blok_P[3]=pom[20];  blok_P[4]=pom[28];  blok_P[5]=pom[11];  blok_P[6]=pom[27];  blok_P[7]=pom[16];
blok_P[8]=pom[0];   blok_P[9]=pom[14];  blok_P[10]=pom[22]; blok_P[11]=pom[25]; blok_P[12]=pom[4];  blok_P[13]=pom[17]; blok_P[14]=pom[30]; blok_P[15]=pom[9];
blok_P[16]=pom[1];  blok_P[17]=pom[7];  blok_P[18]=pom[23]; blok_P[19]=pom[13]; blok_P[20]=pom[31]; blok_P[21]=pom[26]; blok_P[22]=pom[2];  blok_P[23]=pom[8];
blok_P[24]=pom[18]; blok_P[25]=pom[12]; blok_P[26]=pom[29]; blok_P[27]=pom[5];  blok_P[28]=pom[21]; blok_P[29]=pom[10]; blok_P[30]=pom[3];  blok_P[31]=pom[24];

return 0;
}

int xor_koncowe(int *tab_Ri, int *tab2_t, int *blok_P)
{
int i;

	for(i=0;i<32;i++)
	tab_Ri[i]=tab2_t[i]^blok_P[i];

return 0;
}


int xor(int *tab4_t, int *tab4_k, int *tab_xor)
{
int i;

	for(i=0;i<48;i++)
	tab_xor[i]=tab4_k[i]^tab4_t[i];

return 0;
}


int szyfrowanie(int *tab4_k, int *tab2_k, int *tab3_k, int *tab3_t, int *tab4_t, int *tab_xor, int *B1, int *B2, int *B3, int *B4, int *B5, int *B6, int *B7, int *B8, int *y1, int *y2, int *y3, int *y4, int *y5, int *y6, int *y7, int *y8, int *blok_P, int *tab_Ri, int *tab2_t)
{
int i,j;

	for(i=1;i<17;i++)
	{
	przesuw_klucza(tab2_k,i);
	przesuw_klucza(tab3_k,i);

	permutacja_klucza(tab2_k, tab3_k, tab4_k);

	rozszerzanie_Ro(tab3_t, tab4_t);

	xor(tab4_t, tab4_k, tab_xor);

	zamiana_na_bloki(tab_xor, B1, B2, B3, B4, B5, B6, B7, B8);

	S1(B1, y1);
	S2(B2, y2);
	S3(B3, y3);
	S4(B4, y4);
	S5(B5, y5);
	S6(B6, y6);
	S7(B7, y7);
	S8(B8, y8);

	laczenie_y(y1, y2, y3, y4, y5, y6, y7, y8, blok_P);

	permutacja_P_bloku(blok_P);

	xor_koncowe(tab_Ri, tab2_t, blok_P);


	for(j=0;j<32;j++)
	tab2_t[j]=tab3_t[j];   //Li

	for(j=0;j<32;j++)
	tab3_t[j]=tab_Ri[j];   //Ri

	}

return 0;
}


int deszyfrowanie(int *tab4_k, int *tab2_k, int *tab3_k, int *tab3_t, int *tab4_t, int *tab_xor, int *B1, int *B2, int *B3, int *B4, int *B5, int *B6, int *B7, int *B8, int *y1, int *y2, int *y3, int *y4, int *y5, int *y6, int *y7, int *y8, int *blok_P, int *tab_Ri, int *tab2_t)
{
int i,j,k;

       for(k=1;k<17;k++)
	   {
		przesuw_klucza(tab2_k,k);
		przesuw_klucza(tab3_k,k);
	   }


	for(i=16;i>0;i--)
	{
	 if(i!=16)
	 {
		przesuw_klucza_p(tab2_k,i+1);
		przesuw_klucza_p(tab3_k,i+1);
	 }

	     permutacja_klucza(tab2_k, tab3_k, tab4_k);


	rozszerzanie_Ro(tab3_t, tab4_t);

	xor(tab4_t, tab4_k, tab_xor);

	zamiana_na_bloki(tab_xor, B1, B2, B3, B4, B5, B6, B7, B8);

	S1(B1, y1);
	S2(B2, y2);
	S3(B3, y3);
	S4(B4, y4);
	S5(B5, y5);
	S6(B6, y6);
	S7(B7, y7);
	S8(B8, y8);

	laczenie_y(y1, y2, y3, y4, y5, y6, y7, y8, blok_P);

	permutacja_P_bloku(blok_P);

	xor_koncowe(tab_Ri, tab2_t, blok_P);

	for(j=0;j<32;j++)
	tab2_t[j]=tab3_t[j];   //Li

	for(j=0;j<32;j++)
	tab3_t[j]=tab_Ri[j];   //Ri

	}

return 0;
}



int permutacja_pocz_tekstu(int *tab1_t)
{
int tab_pom[64], i;

	for(i=0;i<64;i++)
	tab_pom[i]=tab1_t[i];

tab1_t[0]=tab_pom[57];  tab1_t[1]=tab_pom[49];  tab1_t[2]=tab_pom[41];  tab1_t[3]=tab_pom[33];  tab1_t[4]=tab_pom[25];  tab1_t[5]=tab_pom[17];  tab1_t[6]=tab_pom[9];   tab1_t[7]=tab_pom[1];
tab1_t[8]=tab_pom[59];  tab1_t[9]=tab_pom[51];  tab1_t[10]=tab_pom[43]; tab1_t[11]=tab_pom[35]; tab1_t[12]=tab_pom[27]; tab1_t[13]=tab_pom[19]; tab1_t[14]=tab_pom[11]; tab1_t[15]=tab_pom[3];
tab1_t[16]=tab_pom[61]; tab1_t[17]=tab_pom[53]; tab1_t[18]=tab_pom[45]; tab1_t[19]=tab_pom[37]; tab1_t[20]=tab_pom[29]; tab1_t[21]=tab_pom[21]; tab1_t[22]=tab_pom[13]; tab1_t[23]=tab_pom[5];
tab1_t[24]=tab_pom[63]; tab1_t[25]=tab_pom[55]; tab1_t[26]=tab_pom[47]; tab1_t[27]=tab_pom[39]; tab1_t[28]=tab_pom[31]; tab1_t[29]=tab_pom[23]; tab1_t[30]=tab_pom[15]; tab1_t[31]=tab_pom[7];
tab1_t[32]=tab_pom[56]; tab1_t[33]=tab_pom[48]; tab1_t[34]=tab_pom[40]; tab1_t[35]=tab_pom[32]; tab1_t[36]=tab_pom[24]; tab1_t[37]=tab_pom[16]; tab1_t[38]=tab_pom[8];  tab1_t[39]=tab_pom[0];
tab1_t[40]=tab_pom[58]; tab1_t[41]=tab_pom[50]; tab1_t[42]=tab_pom[42]; tab1_t[43]=tab_pom[34]; tab1_t[44]=tab_pom[26]; tab1_t[45]=tab_pom[18]; tab1_t[46]=tab_pom[10]; tab1_t[47]=tab_pom[2];
tab1_t[48]=tab_pom[60]; tab1_t[49]=tab_pom[52]; tab1_t[50]=tab_pom[44]; tab1_t[51]=tab_pom[36]; tab1_t[52]=tab_pom[28]; tab1_t[53]=tab_pom[20]; tab1_t[54]=tab_pom[12]; tab1_t[55]=tab_pom[4];
tab1_t[56]=tab_pom[62]; tab1_t[57]=tab_pom[54]; tab1_t[58]=tab_pom[46]; tab1_t[59]=tab_pom[38]; tab1_t[60]=tab_pom[30]; tab1_t[61]=tab_pom[22]; tab1_t[62]=tab_pom[14]; tab1_t[63]=tab_pom[6];

return 0;
}

int permutacja_kon_tekstu(int *tab1_t, int *tab3_t, int *tab2_t, char *tekst)
{
int tab_pom[64], i,j;

	//zamiana Li <-> Ri

	for(i=0;i<32;i++)
	tab_pom[i]=tab3_t[i];

j=32;

        for(i=0;i<32;i++)
        {
	tab_pom[j]=tab2_t[i];
	j++;
	}


tab1_t[0]=tab_pom[39];  tab1_t[1]=tab_pom[7];  tab1_t[2]=tab_pom[47];  tab1_t[3]=tab_pom[15];  tab1_t[4]=tab_pom[55];  tab1_t[5]=tab_pom[23];  tab1_t[6]=tab_pom[63];  tab1_t[7]=tab_pom[31];
tab1_t[8]=tab_pom[38];  tab1_t[9]=tab_pom[6];  tab1_t[10]=tab_pom[46]; tab1_t[11]=tab_pom[14]; tab1_t[12]=tab_pom[54]; tab1_t[13]=tab_pom[22]; tab1_t[14]=tab_pom[62]; tab1_t[15]=tab_pom[30];
tab1_t[16]=tab_pom[37]; tab1_t[17]=tab_pom[5]; tab1_t[18]=tab_pom[45]; tab1_t[19]=tab_pom[13]; tab1_t[20]=tab_pom[53]; tab1_t[21]=tab_pom[21]; tab1_t[22]=tab_pom[61]; tab1_t[23]=tab_pom[29];
tab1_t[24]=tab_pom[36]; tab1_t[25]=tab_pom[4]; tab1_t[26]=tab_pom[44]; tab1_t[27]=tab_pom[12]; tab1_t[28]=tab_pom[52]; tab1_t[29]=tab_pom[20]; tab1_t[30]=tab_pom[60]; tab1_t[31]=tab_pom[28];
tab1_t[32]=tab_pom[35]; tab1_t[33]=tab_pom[3]; tab1_t[34]=tab_pom[43]; tab1_t[35]=tab_pom[11]; tab1_t[36]=tab_pom[51]; tab1_t[37]=tab_pom[19]; tab1_t[38]=tab_pom[59]; tab1_t[39]=tab_pom[27];
tab1_t[40]=tab_pom[34]; tab1_t[41]=tab_pom[2]; tab1_t[42]=tab_pom[42]; tab1_t[43]=tab_pom[10]; tab1_t[44]=tab_pom[50]; tab1_t[45]=tab_pom[18]; tab1_t[46]=tab_pom[58]; tab1_t[47]=tab_pom[26];
tab1_t[48]=tab_pom[33]; tab1_t[49]=tab_pom[1]; tab1_t[50]=tab_pom[41]; tab1_t[51]=tab_pom[9];  tab1_t[52]=tab_pom[49]; tab1_t[53]=tab_pom[17]; tab1_t[54]=tab_pom[57]; tab1_t[55]=tab_pom[25];
tab1_t[56]=tab_pom[32]; tab1_t[57]=tab_pom[0]; tab1_t[58]=tab_pom[40]; tab1_t[59]=tab_pom[8];  tab1_t[60]=tab_pom[48]; tab1_t[61]=tab_pom[16]; tab1_t[62]=tab_pom[56]; tab1_t[63]=tab_pom[24];

tekst[0]=128*tab1_t[0]+64*tab1_t[1]+32*tab1_t[2]+16*tab1_t[3]+8*tab1_t[4]+4*tab1_t[5]+2*tab1_t[6]+tab1_t[7];
tekst[1]=128*tab1_t[8]+64*tab1_t[9]+32*tab1_t[10]+16*tab1_t[11]+8*tab1_t[12]+4*tab1_t[13]+2*tab1_t[14]+tab1_t[15];
tekst[2]=128*tab1_t[16]+64*tab1_t[17]+32*tab1_t[18]+16*tab1_t[19]+8*tab1_t[20]+4*tab1_t[21]+2*tab1_t[22]+tab1_t[23];
tekst[3]=128*tab1_t[24]+64*tab1_t[25]+32*tab1_t[26]+16*tab1_t[27]+8*tab1_t[28]+4*tab1_t[29]+2*tab1_t[30]+tab1_t[31];
tekst[4]=128*tab1_t[32]+64*tab1_t[33]+32*tab1_t[34]+16*tab1_t[35]+8*tab1_t[36]+4*tab1_t[37]+2*tab1_t[38]+tab1_t[39];
tekst[5]=128*tab1_t[40]+64*tab1_t[41]+32*tab1_t[42]+16*tab1_t[43]+8*tab1_t[44]+4*tab1_t[45]+2*tab1_t[46]+tab1_t[47];
tekst[6]=128*tab1_t[48]+64*tab1_t[49]+32*tab1_t[50]+16*tab1_t[51]+8*tab1_t[52]+4*tab1_t[53]+2*tab1_t[54]+tab1_t[55];
tekst[7]=128*tab1_t[56]+64*tab1_t[57]+32*tab1_t[58]+16*tab1_t[59]+8*tab1_t[60]+4*tab1_t[61]+2*tab1_t[62]+tab1_t[63];

return 0;

}
Przy kompilacji wyskakują ostrzeżenia:

Kod: Zaznacz cały

gcc des.c -o dess -Wall
des.c: In function ‘main’:
des.c:272: warning: suggest parentheses around assignment used as truth value
/tmp/cc1LQPnw.o: In function `main':
des.c:(.text+0x1ab): warning: the `gets' function is dangerous and should not be used.
Linia 272 to:

Kod: Zaznacz cały

while(ilosc=(fread(tekst,sizeof(unsigned char),8,plik_odczyt)))
Awatar użytkownika
mario_7
Administrator
Administrator
Posty: 8614
Rejestracja: 30 sie 2006, 13:11
Płeć: Mężczyzna
Wersja Ubuntu: 20.04
Środowisko graficzne: GNOME
Architektura: x86_64

Re: brak bibliotek

Post autor: mario_7 »

Po raz drugi i ostatni:
Zmień tytuł tematu tak, aby w sposób możliwie precyzyjny przedstawiał sedno sprawy, w której piszesz. Miej na uwadze również zgodność z REGULAMINEM
Tytuł tematu zmienisz edytując pierwszy post
W razie wątpliwości/zastrzeżeń odnośnie powyższej informacji skontaktuj się z moderatorem, który ją wstawił.
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 4 gości