#include<stdio.h> #include<string.h> #include<stdlib.h> int **matrixMultiply(int**a,int r1,int c1,int **b,int r2,int c2) { int **resultMatrix; int i,j,k,r,c; r=r1;c=c2; resultMatrix=(int**)malloc(sizeof(int*)*r); for(i=0;i<r;i++) resultMatrix[i]=(int*)malloc(sizeof(int)*c); for(i=0;i<r;i++) { for(j=0;j<c;j++) { resultMatrix[i][j]=0; for(k=0;k<c1;k++) resultMatrix[i][j]+=a[i][k]*b[k][j]; } } return resultMatrix; } void printMatrix(int**matrix,int r,int c) { int i,j; for(i=0;i<r;i++) { for(j=0;j<c;j++) printf("%d ",matrix[i][j]); printf("\n"); } } int plainTextToCipherText(char plainText[],int**matrix) { int len,**plainTextMatrix,**resultMatrix,i,j; // The matrix will be of dimensions strlen(plainText) by strlen(plainText) char *cipherText; len=strlen(plainText); cipherText=(char*)malloc(sizeof(char)*1000); // plainTextMatrix should be of dimension strlen(plainText) by 1 // allcating memory to plainTextMatrix plainTextMatrix=(int**)malloc(sizeof(int*)*len); for(i=0;i<len;i++) plainTextMatrix[i]=(int*)malloc(sizeof(int)*1); // populating the plainTextMatrix for(i=0;i<len;i++) for(j=0;j<1;j++) plainTextMatrix[i][j]=plainText[i]-'a'; resultMatrix=matrixMultiply(matrix,len,len,plainTextMatrix,len,1); // taking mod 26 of each element of the result matrix for(i=0;i<len;i++) for(j=0;j<1;j++) resultMatrix[i][j]%=26; // Printing the cipher text printf("The cipher text is as follows : "); for(i=0;i<len;i++) for(j=0;j<1;j++) printf("%c",resultMatrix[i][j]+'a'); printf("\n"); //printMatrix(resultMatrix,len,1); } int main() { int len,i,j,**matrix; char plainText[1000]; printf("Enter the word to be encrypted : "); scanf(" %s",plainText); len=strlen(plainText); // allocating memory to matrix matrix=(int**)malloc(sizeof(int*)*len); for(i=0;i<len;i++) matrix[i]=(int*)malloc(sizeof(int)*len); printf("Enter the matrix of %d by %d to be used in encryption process : \n",len,len); for(i=0;i<len;i++) for(j=0;j<len;j++) scanf("%d",&matrix[i][j]); plainTextToCipherText(plainText,matrix); return 0; }
Sunday, 12 April 2015
Hill Cipher - Program in C
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment