C Program
#include<stdio.h> #include<conio.h> void main() { char v,w,ch,string[100],arr[5][5],key[10],a,b,enc[100]; int temp,i,j,k,l,r1,r2,c1,c2,t,var; FILE * fp; fp=fopen("sk.txt","r"); //keep message in sk.txt (e.g. jamia) clrscr(); printf("Enter the key\n"); fflush(stdin); scanf("%s",&key); l=0; while(1) { ch=fgetc(fp); if(ch!=EOF) { string[l++]=ch; } if(ch==EOF) break; } string[l]='\0'; puts(string); for (i=0;key[i]!='\0';i++) { for (j=i+1;key[j]!='\0';j++) { if(key[i]==key[j]) { temp=1; break; } } } if(temp==1) printf("invalid key"); else { k=0; a='a'; //printf("%c",b); for (i=0;i<5;i++) { for (j=0;j<5;j++) { if(k<strlen(key)) arr[i][j]=key[k]; else if(k==strlen(key)) { b: for (l=0;l<strlen(key);l++) { if(key[l]==a) { a++; goto b; } } arr[i][j]=a; if(a=='i') a=a+2; else a++; } if(k<strlen(key)) k++; } } printf("\n"); printf("The matrix is\n"); for (i=0;i<5;i++) { for (j=0;j<5;j++) { printf("%c",arr[i][j]); } printf("\n"); } t=0; if(strlen(string)%2!=0) var=strlen(string)-1; for (i=0;i<var;) { v=string[i++]; w=string[i++]; if(v==w) { enc[t++]=v; enc[t++]='$'; } else { for (l=0;l<5;l++) { for (k=0;k<5;k++) { if(arr[l][k]==v||v=='j'&&arr[l][k]=='i') { r1=l; c1=k; } if(arr[l][k]==w||w=='j'&&arr[l][k]=='i') { r2=l; c2=k; } } } if(c1==c2) { r1++; r2++; if(r1==5||r2==5) { r1=0; r2=0; } } else if(r1==r2) { c1++; c2++; if(c1==5||c2==5) { c1=0; c2=0; } } else { temp=r1; r1=r2; r2=temp; } enc[t++]=arr[r1][c1]; enc[t++]=arr[r2][c2]; } } if(strlen(string)%2!=0) enc[t++]=string[var]; enc[t]='\0'; } printf("The encrypted text is\n"); puts(enc); getch(); }