/* http://www.mrwadlo.com */ #include #include void showpercent(int percent); void createfilename(); void loadfile(); void writetodisk(); void readfile(); void writefile(); void selectoper(); void crypt(); int mark; long filesize; char oper; char iofile[15]; char crypttext[2000]; int main() { int i; char reply = '?'; clrscr(); selectoper(); while ( oper == 'D' ) { gotoxy(8,24); printf("Please Enter Output Filename Using 8.3 limit: "); scanf("%12s", &iofile); if ( fopen(iofile,"rb") ) { break; } else { clrscr(); gotoxy(10,25); printf("%s - No Such File, Try Again.",iofile); } } if ( oper == 'E' ) { writefile(); crypt(); writetodisk(); } if ( oper == 'D' ) { loadfile(); crypt(); readfile(); gotoxy(19,25); printf("Would you like to write a reply? [Y]es [N]o"); do { reply = getch(); } while ( reply != 'y' && reply != 'Y' && reply != 'n' && reply != 'N'); if ( reply == 'y' || reply == 'Y') { clrscr(); oper = 'E'; writefile(); crypt(); writetodisk(); } } 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 loadfile() { int i; FILE *fpREAD; fpREAD = fopen(iofile,"rb"); fseek(fpREAD, 0, SEEK_END); filesize = ftell(fpREAD); rewind(fpREAD); for ( i=0 ; ( i 78 ) { printf("\n "); para = 2; line++; } else para++; } if ( i == 0 ) { printf("(Loaded File is Empty)"); } } void writefile() { int i = 0; char sym; int col = 2; int colcount; int line = 2; gotoxy(8,24); printf("Please Enter Output Filename Using 8.3 limit: "); scanf("%12s", &iofile); clrscr(); gotoxy(19,25); printf("Enter Message. Press [ESC] to save and exit."); gotoxy(2,2); sym = getch(); while ( sym != 27 && i<2000 ) { if ( col == 79 && sym != '\b' ) { if ( line == 23 ) { printf("\b \b\a"); i--; col--; } else { printf("%c\n ",170); crypttext[i] = 13; line++; col = 2; i++; } } if (sym == 9) { crypttext[i] = 29; printf("%c",29); col++; } else if ( sym == 13 ) { if ( line == 23 ) { printf("\a"); i--; } else { printf("%c\n ",170); crypttext[i] = 13; line++; col = 2; } } else if ( sym == '\b' ) { if ( col == 2 && line == 2 ) { printf("\a"); i--; } else if ( col == 2 ) { colcount = i-2; while ( crypttext[colcount] != 13 && colcount != -1 ) { colcount--; } col = i - colcount; gotoxy(col,--line); printf(" \b"); i-=2; } else { printf("\b \b"); i--; crypttext[i] = '\0'; i--; col--; } } else { crypttext[i] = sym; printf("%c", sym); col++; } i++; sym = getch(); } filesize = i; } void selectoper() { gotoxy(19,25); printf("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'; clrscr(); } void crypt() { long i; char sym; int percent; long start, end; long fib = 1; long last = 0; long temp; int fib_mod; if (oper == 'E' ) printf("\n Encrypting "); if ( oper == 'D' ) printf("\n Decrypting "); 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; sym = crypttext[i]; if ( oper == 'E' ) sym = sym + fib_mod; if ( oper == 'D' ) sym = sym - fib_mod; if ( sym > 253 ) sym % 254; if ( sym < 0 ) sym + 254; crypttext[i] = sym; if ( 100*i/filesize > percent ) { percent++; showpercent(percent); } } while (percent < 100 ) showpercent(++percent); printf("\n Done"); } void writetodisk() { int i; FILE *fpWRITE; fpWRITE = fopen(iofile,"wb"); for ( i=0 ; i