#include #include char cipher[] = "ADFGVX"; char polybius[6][6]; //POLYBIUS MATRIX //Assume that both the keys have less than 20 characters char first[20]; //FIRST KEY char first1[20]; //INPUT ARRAY 1 char second1[20]; //INPUT ARRAY 2 char second[20]; //SECOND KEY //Assuming message is smaller than 940 characters char message[940]; //INITIAL MESSAGE char head[940][3]; //HEADER char final[100][20]; //FINAL CIPHER TABLE char lamb[1980]; //PLACEHOLDER ARRAY char aux[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; char aux1[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; int meslength; //MESSAGE LENGTH OF ENCODED MESSAGE void prePreProcess() { int i,j; for (i =0; i<100; i++) { for (j =0; j<20; j++) { final[i][j] = " "; } } } void preProcess() //PREPROCESSING THE SECOND KEY { int i,j; int l = strlen(second1); for (i =0; i=l; j--) { aux[j]=aux[j-1]; } aux[l] = first[l]; l++; i=0; } else { i++; } } int m =0; for (i =0; i<6; i++) { for(j =0; j<6; j++) { polybius[i][j]=aux[m++]; } } printf("POLYBIUS MATRIX IS AS FOLLOWS: \n"); for (i =0; i<6; i++) { for(j =0; j<6; j++) { printf(" %c ",polybius[i][j]); } printf("\n"); } } char row(char c) //ENCOODING THE FIRST CIPHER { int i,j; for(i =0; i<6; i++) { for (j=0; j<6; j++) { if(polybius[i][j] == c) { return(cipher[i]); } } } } char collumn(char c) //ENCODING THE SECOND CIPHER { int i,j; for(i =0; i<6; i++) { for (j=0; j<6; j++) { if(polybius[i][j] == c) { return(cipher[j]); } } } } void convertCharToHead() //CONVERTING THE FIRST OUTPUT TO THE SECOND FORM { int len = strlen(message); int i,j,k; int m =0; lamb[0] = 0; for (i = 0; i