//Szyfr podstawieniowy //wykonal Grzegorz Gasiewski //pobrano ze strony http://gege01.prv.pl #include #include #include #include int main() { int strona_gl(unsigned char *tab); int szyfrowanie(unsigned char *tab); int deszyfrowanie(unsigned char *tab); int szyfr_i_deszyfr(unsigned char *tab); unsigned char tab[256],buf,x,znak; int licznik_1,licznik_2,ziarno; ziarno=0; clrscr(); gotoxy(21,2); printf("SZYFROWANIE PPZEZ PODSTAWIANIE"); gotoxy(20,20); printf("program wykonal Grzegorz Gasiewski"); gotoxy(20,22); printf("http:\\\\gege01.prv.pl gege01@wp.pl"); gotoxy(20,10); printf("Standardowe ziarno = 0"); gotoxy(20,12); printf("Podaj ziarno: "); scanf("%d",&ziarno); getchar(); gotoxy(20,14); printf("ziarno = %d",ziarno); delay(800); srand(ziarno); //zapelnianie tablicy wartosciami 0..255 <=> kody ASCII for(licznik_1=0;licznik_1<=255;licznik_1++) tab[licznik_1]=licznik_1; for(licznik_1=1;licznik_1<=100;licznik_1++) //ponizsza zamiana wyk. 100 razy { for(licznik_2=0;licznik_2<=127;licznik_2++) //zamiana miejscami { // 0..127<=>128..255 x=random(128)+128; buf=tab[licznik_2]; tab[licznik_2]=tab[x]; tab[x]=buf; } } strona_gl(tab); return 0; } int szyfrowanie(unsigned char *tab) { FILE *plik_odczyt, *plik_zapis; unsigned char znak; char sciezka_1[12], sciezka_2[12]; int licznik_1; clrscr(); gotoxy(10,10); printf("Podaj sciezke dostepu pliku zrodlowego: "); gets(sciezka_1); plik_odczyt=fopen(sciezka_1,"rb"); if(!plik_odczyt) { gotoxy(26,14); printf("Blad otwarcia pliku %s", sciezka_1); delay(2000); return (0); } gotoxy(10,12); printf("Podaj sciezke dostepu pliku zaszyfrowanego: "); gets(sciezka_2); plik_zapis=fopen(sciezka_2,"wb+"); if(!plik_zapis) { gotoxy(26,14); printf("Blad otwarcia pliku %s", sciezka_2); delay(2000); return (0); } clrscr(); gotoxy(20,10); printf("Trwa szyfrowanie. Prosze czekac..."); while(fread(&znak,sizeof(char),1,plik_odczyt)==1) { znak=tab[znak]; //szyfrowanie fwrite(&znak,sizeof(char),1,plik_zapis); } fclose(plik_odczyt); fclose(plik_zapis); clrscr(); gotoxy(14,10); printf("Operacja szyfrowania wykonana pomyslnie."); gotoxy(20,12); printf("Nacisnij ..."); getchar(); return 0; } int deszyfrowanie(unsigned char *tab) { FILE *plik_odczyt, *plik_zapis; unsigned char znak; char sciezka_1[12], sciezka_2[12]; int licznik_1; clrscr(); gotoxy(10,10); printf("Podaj sciezke dostepu pliku zaszyfrowanego: "); gets(sciezka_1); plik_odczyt=fopen(sciezka_1,"rb"); if(!plik_odczyt) { gotoxy(26,14); printf("Blad otwarcia pliku %s", sciezka_1); delay(2000); return (0); } gotoxy(10,12); printf("Podaj sciezke dostepu pliku odszyfrowanego: "); gets(sciezka_2); plik_zapis=fopen(sciezka_2,"wb+"); if(!plik_zapis) { gotoxy(26,14); printf("Blad otwarcia pliku %s", sciezka_2); delay(2000); return (0); } clrscr(); gotoxy(20,10); printf("Trwa deszyfrowanie. Prosze czekac..."); while(fread(&znak,sizeof(char),1,plik_odczyt)==1) //deszyfrowanie { for(licznik_1=0;licznik_1<=255;licznik_1++) if(tab[licznik_1]==znak) { znak=licznik_1; fwrite(&znak,sizeof(char),1,plik_zapis); break; } } fclose(plik_odczyt); fclose(plik_zapis); clrscr(); gotoxy(14,10); printf("Operacja deszyfrowania wykonana pomyslnie."); gotoxy(20,12); printf("Nacisnij ..."); getchar(); return 0; } int strona_gl(unsigned char *tab) { char znak; do{ clrscr(); gotoxy(21,2); printf("SZYFROWANIE PPZEZ PODSTAWIANIE"); gotoxy(22,6); printf("Jaka operacje chcesz wykonac?"); gotoxy(22,8); printf("1 - szyfrowanie"); gotoxy(22,10); printf("2 - deszyfrowanie"); gotoxy(22,12); printf("q - wyjscie"); gotoxy(20,20); printf("program wykonal Grzegorz Gasiewski"); gotoxy(20,22); printf("http:\\\\gege01.prv.pl gege01@wp.pl"); znak=getch(); switch(znak){ case '1':szyfrowanie(tab); strona_gl(tab); return 0; case '2':deszyfrowanie(tab); strona_gl(tab); return 0; case ('q'): return 0; case ('Q'): return 0; default: gotoxy(22,18); printf("Nacisnij '1', '2' lub 'q'"); sound(2000); delay(500); nosound();} }while((znak!='1')&&(znak!='2')); return 0; }