C program to implement Transposition Cipher to encrypt and decrypt a given message. This program is tested on Turbo C software.
Output of the above program:-
For more c programs related to Network, See the Network label. Share and comment to improve this blog.
Related Programs:-
★ Encrypt and Decrypt a message using PlayFair Cipher
★ Calculate compression ratio
★ Java code to implement RSA Algorithm
★ Java code to implement MD5 Algorithm
★ Java code to send and receive Text or Image File
#include<stdio.h> #include<string.h> void cipher(int i,int c); int findMin(); void makeArray(int,int); char arr[22][22],darr[22][22],emessage[111],retmessage[111],key[55]; char temp[55],temp2[55]; int k=0; int main() { char *message,*dmessage; int i,j,klen,emlen,flag=0; int r,c,index,min,rows; clrscr(); printf("Enetr the key\n"); fflush(stdin); gets(key); printf("\nEnter message to be ciphered\n"); fflush(stdin); gets(message); strcpy(temp,key); klen=strlen(key); k=0; for(i=0; ;i++) { if(flag==1) break; for(j=0;key[j]!=NULL;j++) { if(message[k]==NULL) { flag=1; arr[i][j]='-'; } else { arr[i][j]=message[k++]; } } } r=i; c=j; for(i=0;i<r;i++) { for(j=0;j<c;j++) { printf("%c ",arr[i][j]); } printf("\n"); } k=0; for(i=0;i<klen;i++) { index=findMin(); cipher(index,r); } emessage[k]='\0'; printf("\nEncrypted message is\n"); for(i=0;emessage[i]!=NULL;i++) printf("%c",emessage[i]); printf("\n\n"); //deciphering emlen=strlen(emessage); //emlen is length of encrypted message strcpy(temp,key); rows=emlen/klen; //rows is no of row of the array to made from ciphered message rows; j=0; for(i=0,k=1;emessage[i]!=NULL;i++,k++) { //printf("\nEmlen=%d",emlen); temp2[j++]=emessage[i]; if((k%rows)==0) { temp2[j]='\0'; index=findMin(); makeArray(index,rows); j=0; } } printf("\nArray Retrieved is\n"); k=0; for(i=0;i<r;i++) { for(j=0;j<c;j++) { printf("%c ",darr[i][j]); //retrieving message retmessage[k++]=darr[i][j]; } printf("\n"); } retmessage[k]='\0'; printf("\nMessage retrieved is\n"); for(i=0;retmessage[i]!=NULL;i++) printf("%c",retmessage[i]); getch(); return(0); } void cipher(int i,int r) { int j; for(j=0;j<r;j++) { { emessage[k++]=arr[j][i]; } } // emessage[k]='\0'; } void makeArray(int col,int row) { int i,j; for(i=0;i<row;i++) { darr[i][col]=temp2[i]; } } int findMin() { int i,j,min,index; min=temp[0]; index=0; for(j=0;temp[j]!=NULL;j++) { if(temp[j]<min) { min=temp[j]; index=j; } } temp[index]=123; return(index); }
Output of the above program:-
Encrypted Message using Transposition Cipher |
Decrypted Message using Transposition Cipher |
For more c programs related to Network, See the Network label. Share and comment to improve this blog.
Related Programs:-
★ Encrypt and Decrypt a message using PlayFair Cipher
★ Calculate compression ratio
★ Java code to implement RSA Algorithm
★ Java code to implement MD5 Algorithm
★ Java code to send and receive Text or Image File
looks like the cipher function is broken. there is mismatched braces, it should iterate over i as well.
ReplyDeletevoid cipher(int i,int r)
{
int j;
for(j=0;j<r;j++)
{
{
emessage[k++]=arr[j][i];
}
}
// emessage[k]='\0';
}
Llhc
Delete#include
ReplyDelete#include
#include
void rowtrans(char p[10][10]);
void coltrans(char p[10][10]);
int row,col,i,j;
char p[10][10];
void main()
{
int ch=0,l=0;
char plain[100];
clrscr();
printf("Enter the plain text = ");
gets(plain);
printf("Enter no of rows and column = ");
scanf("%d",&row);
scanf("%d",&col);
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
if(plain[l]!='\0')
{
if(plain[l]==' ')
l++;
p[i][j]=plain[l];
l++;
}
else
{ break; }
}
}
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
printf("%c ",p[i][j]);
}
printf("\n");
}
while(ch<3)
{
printf("\n\n1.Row Transposition \n2.Column Transposition \n3.Exit");
printf("\nEnter your choice = ");
scanf("%d",&ch);
switch(ch)
{
case 1:
rowtrans(p);
break;
case 2:
coltrans(p);
break;
}
}
getch();
}
void rowtrans(char p[10][10])
{
int l=0,k[10],u;
char c[10][10],x[10][10];
printf("Enter the key to arrange 1 to %d row =\n",row);
for(i=0;i<row;i++)
scanf("%d",&k[i]);
printf("\n**********Encryption**********\n");
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
u=k[l]-1;
c[i][j]=p[u][j];
}
l++;
}
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
printf("%c ",c[i][j]);
}
printf("\n");
}
printf("Cipher Text = ");
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
printf("%c",c[i][j]);
}
}
printf("\n**********Decryption**********\n");
l=0;
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
u=k[l]-1;
x[u][j]=c[i][j];
}
l++;
}
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
printf("%c ",x[i][j]);
}
printf("\n");
}
printf("Plain Text = ");
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
printf("%c",x[i][j]);
}
}
}
void coltrans(char p[10][10])
{
int l=0,k[10],u;
char c[10][10],x[10][10];
printf("Enter the key to arrange 1 to %d column =\n",col);
for(i=0;i<col;i++)
scanf("%d",&k[i]);
printf("\n**********Encryption**********\n");
for(i=0;i<row;i++)
{ l=0;
for(j=0;j<col;j++)
{
u=k[l]-1;
c[i][j]=p[i][u];
l++;
}
}
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
printf("%c ",c[i][j]);
}
printf("\n");
}
printf("Cipher Text = ");
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
printf("%c",c[i][j]);
}
}
printf("\n**********Decryption**********\n");
l=0;
for(i=0;i<row;i++)
{ l=0;
for(j=0;j<col;j++)
{
u=k[l]-1;
x[i][u]=c[i][j];
l++;
}
}
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
printf("%c ",x[i][j]);
}
printf("\n");
}
printf("Plain Text = ");
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
printf("%c",x[i][j]);
}
}
}
Can U Share Any Youtube video to explain this.
Delete