/* http://www.mrwadlo.com */ #include #include void showpercent(int percent); void createfilename(); int mark; char inputfile[15]; char outputfile[15]; int main() { long i; long filesize; char sym; int percent; long fib = 1; long last = 0; long temp; int fib_mod; char oper; FILE *fpREAD; FILE *fpWRITE; clrscr(); printf("\n Please Select Operation: [E]ncrypt [D]ecrypt"); do { oper = getch(); if ( oper == 'e' || oper == 'E' || oper == 'd' || oper == 'D' ) break; else printf("\a"); } while ( 1 ); if ( oper == 'e' ) oper = 'E'; else if ( oper == 'd' ) oper = 'D'; do { printf("\n Enter First Filename Using 8.3 limit: "); scanf("%12s", &inputfile); if ( fopen(inputfile,"rb") ) break; else printf(" %s <-- No Such File, Try Again!", inputfile); } while ( 1 ); createfilename(); printf(" Outputting to: %s", outputfile); printf("\n "); for ( i=0 ; i<38 ; i++ ) printf("- "); fpREAD = fopen(inputfile,"rb"); fpWRITE = fopen(outputfile,"wb"); fseek(fpREAD, 0, SEEK_END); filesize = ftell(fpREAD); rewind(fpREAD); printf("\n %12s Filesize = %ld", inputfile, filesize); printf("\n %12s ", inputfile); percent = 0; for ( i=0 ; i < filesize ; i++ ) { temp = fib; fib = fib + last; last = temp; fib_mod = fib % 254; fib = fib % 9000000000; last = last % 9000000000; fread(&sym, 1, 1, fpREAD); if ( oper == 'E' ) sym = sym + fib_mod; if ( oper == 'D' ) sym = sym - fib_mod; if ( sym > 253 ) sym % 254; if ( sym < 0 ) sym + 254; fwrite(&sym, 1, 1, fpWRITE); if ( 100*i/filesize > percent ) { percent++; showpercent(percent); } } while (percent < 100 ) showpercent(++percent); printf("\n Done"); fclose(fpREAD); fclose(fpWRITE); printf("\n Press Any Key To Exit..."); getch(); return 0; } void showpercent(int percent) { if( percent % 2 == 0) { mark++; if ( mark % 2 == 0) { printf("%c",223); } else { printf("%c",220); } printf(" %3d%%", percent); printf("\b\b\b\b\b"); } } void createfilename() { int i; for ( i=0 ; i<13 ; i++ ) { if ( inputfile[i] == '.' ) break; else outputfile[i] = 'O'; } while ( i<13 && inputfile[i] != '\n') { outputfile[i] = inputfile[i]; i++; } }