int character_value(char character) { const char alphabet[128] = {'@', '@', '$', '@', '@', '@', '@', '@', '@', '@', '\n', '@', '@', '\r','@', '@','@', '_', '@', '@', '@', '@', '@','@', '@', '@', '@','@', '@', '@', '@', '@',' ', '!', '"', '#', '@', '%', '&', '\'', '(', ')','*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7','8', '9', ':', ';', '<', '=', '>', '?', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S','T', 'U', 'V', 'W', 'X', 'Y', 'Z', '@', '@', '@', '@', '@', '@', 'a','b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o','p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '@', '@', '@','@', '@'}; int i; for(i=0;i<128;i++){ if(character == alphabet[i]){ return i; } } return -1; //no valid character } int bin2int(char * binary) { int i; int sum = 0; int length; length = strlen(binary); for(i=0;i<length;i++){ if(binary[i] == '1'){ //sum += (int)pow((double)2,(double)(length-1-i)); sum += 0x01<<(length-1-i); } } return sum; } void process_message(char * message_str, char * message) { char buffer[8]="\0"; int length; int i; int character = -1; char base[8]="\0"; char carry[8]="\0"; char rdbuffer[8]="\0"; //init message_str[0] = '\0'; length = strlen(message); if(length<=15){ strcat(message_str, "00000"); } else { if(length>160){ length = 160; } strcat(message_str, "0000"); } itoa(length, buffer, 16); //convert integer to hex string strcat(message_str, buffer); for(i=0;i<=length;i++){ if(i == length){ if(base[0] != '\0'){ character = bin2int(base); itoa(character, base, 16); if(strlen(base)==1){ base[1]=base[0]; base[0]='0'; base[2]='\0'; } strcat(message_str, base); } break; } character = character_value(message[i]); if(character != -1){ strcpy(buffer,"0000000"); itoa(character, rdbuffer, 2); strcpy(buffer+7-strlen(rdbuffer), rdbuffer); if(i != 0 && i%8 !=0){ strncpy(carry, buffer+7-i%8, i%8); carry[i%8] = '\0'; strcat(carry, base); character = bin2int(carry); itoa(character, carry, 16); if(strlen(carry)==1){ carry[1]=carry[0]; carry[0]='0'; carry[2]='\0'; } strcat(message_str, carry); strncpy(base, buffer, 7-i%8); base[7-i%8] = '\0'; } else{ strcpy(base, buffer); } } else{ //ERROR: Not a valid character } } }