/* enc.c Convert a string, each character into binary. Take "key" * and convert to binary. xor character binary with key binary to make * the new encrypted character. Key will be obtained through input. * (c) 2006 Shaun Marquardt. */ #include <stdio.h> #include <stdlib.h> //exit //strtol #include <conio.h> //clrscr //getche #include <string.h> //strlen for htoa #include <ctype.h> //toupper for htoa #define TRUE 1 #define FALSE !TRUE void htoa( char *input ); long strtol(const char *s, char **endp, int base); //strtol is in stdlib.h int main(int argc, char *argv[]) { char input_str[100]; char key_str[100]; char enc_str[100]; char input_bits; char key_bits; char enc_bits[8]; char *bp; int p = 0; clrscr(); printf("Enter the string to be encrypted: "); gets(input_str); printf("\nDebug: input_str = %s",input_str); printf("\nEnter Encryption Key: "); for(p=0; input_str[p] != NULL; p++) key_str[p] = getche(); printf("\nDebug: key_str = %s",key_str); printf("\n\n========Encrypt.========\n\n"); sprintf(input_bits, "%ld", strtol(input_str, &bp, 2)); //ascii ->bin sprintf(key_bits, "%ld", strtol(key_str, &bp, 2)); printf("\nDebug: input_bits = %s\n", input_bits); printf("Debug: key_bits = %s\n", key_bits); /* bitwise math-o-rama */ for(p=0; input_bits[p] != NULL; p++) { if (input_bits[p] == key_bits[p]) enc_bits[p] = 1; enc_bits[p] = 0; } sprintf(enc_str, "%ld", strtol(enc_bits, &bp, 16)); //bin ->hex htoa(enc_str); printf("\nDone. Press the enter key to exit the program."); getch(); exit(0); } /* my stolen htoa (c) me */ void htoa( char *input ) { unsigned char a; char hex[5]; char buf[5]; int x = 0, col = 0; int done; hex[0] = '\0'; if( (strlen(input) % 2) != 0 ) { printf("Hex characters must be entered in pairs.\n"); getch(); exit(1); } printf("Hex - \"%s\"\n",input); printf("--== Output ==--\n\n"); printf("\""); done = FALSE; while(!done) { if(input[x] == '\0') //End of input, done. { printf("\"\n"); done = TRUE; break; } if(input[x] == ' ') //Space character? Print out a space. { printf("%c", ' '); x++; } sprintf(hex, "%c%c", toupper(input[x]), toupper(input[x+1])); //Get Hex Char x+=2; for(a=32;a<128;a++) { //Go through list of characters sprintf(buf, "%X",a); if(!strcmp(buf, hex)) //Matching, print character printf("%c",a); else //Not Matching, continue continue; col++; if(col >= 79) { col = 0; printf("\n\r"); } break; } //end "a" for loop } //end while return; } //end htoa