//******PROGRAM PRO SIFROVANI OBECNEHO SOUBORU VIGENEROVOU SIFROU //******PRO VYHEN HIPP 1996 #include <io.h> #include <stdio.h> #include <string.h> #include <conio.h> #define byte unsigned char // delk bufferu #define BufL 1000 char main(int argc,char ** argv){ //naplnena delka bufferu, citac v cyklu (holka pro vsechno) unsigned int bleng,c; int f1,f2;//vstupni a vystupni soubor //buffery, klic, posice v klici, delka klice byte buf[2][BufL],klic[256],pos={0},dk; printf("\nProgram na zasifrovani obecnych souboru\n"); if (argc<3) {//malo parametru printf("obsif.exe vstupni.sou vystupni.sou\n"); return -1; } if ((f1=open(argv[1],1))==EOF) { fprintf(stderr,"Soubor %s nenalezen\n",argv[1]); return -1; } if ((f2=open(argv[2],258))==EOF) { fprintf(stderr,"Soubor %s nelze vytvorit\n",argv[2]); close(f1); return -1; } //zadava klic printf("Zadej klic : "); scanf("%s",klic); dk=strlen(klic); //sifrovat nebo desifrovat ? tot otazka printf("Chces sifrovat ci desifrovat ? (S x D)\n"); do{ c=getch(); } while ((c!='D') && (c!='S') && (c!='d') && (c!='s')); //meni klic pro desifrovani if ((c=='D') || (c=='d')) for (c=0;c<dk;c++) klic[c]=(256-klic[c]); //nacita soubor do bufferu a zapisuje do druhyho while ((bleng=_read(f1,&buf[0][0],BufL))!=0){ //sifruje buffer for (c=0;c<bleng;c++,pos++){ if (pos==dk) pos=0; buf[1][c]=(buf[0][c]+klic[pos]);//pricita klic } _write(f2,buf[1],bleng);//zapisuje buffer do souboru } close(f1); close(f2); } výheň