C PROGRAMS : ENCODE AND DECODE ( CIPHER )

Program to encode and decode ( cipher )
#include<stdio.h>
#include<conio.h> // Linux user - Remove this

int main()
{
 // Declaring variable for pt=plaint text, ct=cipher text
 char pt[20],ct[20];
 int l=0,i,j,k=0;
 int kl,key[20];
 printf("%d",(-27%26));
 printf("Enter string:");
 gets(pt);
 while(pt[l]!='\0')
 l++;
 
 printf("Enter key length:");
 scanf("%d",&kl);
 printf("Enter key:");
 for(i=0;i<kl;i++)
 {
  scanf("%d",&key[i]);
 }
 if(kl!=l)
 {
 for(i=kl;i<l;i++)
 {
  if(k==kl)
  {
  k=k-kl;
  key[i]=key[k];
  k++;
  }
  else
  {
  key[i]=key[k];
  k++;
   }
 }
 }
 printf("Key Sequence: ");
 for(i=0;i<l;i++)
 {
  printf("%d ",key[i]);
 }
 
 // Encrypting
  for(i=0;i<l;i++)
 {
  // For small letter
  if(pt[i]>=97 && pt[i]<=122)
  ct[i]=(((pt[i]-97)+key[i])%26)+97; 
  
  // For capital letter
  else if(pt[i]>=65 && pt[i]<=90)
  ct[i]=(((pt[i]-65)+key[i])%26)+65;
  
  // For digits 
  else if(pt[i]>=48 && pt[i]<=57)
  ct[i]=(((pt[i]-48)+key[i])%10)+48;
  
  // For special Charactrer
  else if(pt[i]>=33 && pt[i]<=47)
  ct[i]=(((pt[i]-33)+key[i])%15)+33;
  
  else if(pt[i]>=58 && pt[i]<=64)
  ct[i]=(((pt[i]-58)+key[i])%7)+58;
  
  else if(pt[i]>=91 && pt[i]<=96)
  ct[i]=(((pt[i]-91)+key[i])%6)+91;
  
  else if(pt[i]>=123 && pt[i]<=126)
  ct[i]=(((pt[i]-123)+key[i])%4)+123;
  
  // For space 
  else if(pt[i]==' ')
  ct[i]=pt[i]+127+key[i]; 
}
    
 
 printf("\nEncrypted data: ");
 for(i=0;i<l;i++)
 {
  printf("%c",ct[i]);
 }
 
 // Decrypting
 for(i=0;i<l;i++)
 {
  // For small letter
  if(ct[i]>=97 && ct[i]<=122)
  {
   if((((ct[i]-97)-key[i])%26)<0)
   pt[i]=ct[i]-key[i]+26;
   else
    pt[i]=(((ct[i]-97)-key[i])%26)+97; 
  }
  
  // For capital letter
  else if(ct[i]>=65 && pt[i]<=90)
  {
   if((((ct[i]-65)-key[i])%26)<0)
   pt[i]=ct[i]-key[i]+26;
   else
    pt[i]=(((ct[i]-65)-key[i])%26)+65; 
  }
  
  // For digits
  else if(ct[i]>=48 && pt[i]<=57)
  {
   if((((ct[i]-48)-key[i])%10)<0)
   pt[i]=ct[i]-key[i]+10;
   else
    pt[i]=(((ct[i]-48)-key[i])%10)+48; 
 
      }
      
  // For special character
  else if(ct[i]>=33 && pt[i]<=47)
  {
   if((((ct[i]-33)-key[i])%15)<0)
   pt[i]=ct[i]-key[i]+15;
   else
    pt[i]=(((ct[i]-33)-key[i])%15)+33; 
 
  }
  
   else if(ct[i]>=58 && pt[i]<=64)
  {
   if((((ct[i]-58)-key[i])%7)<0)
   pt[i]=ct[i]-key[i]+7;
   else
    pt[i]=(((ct[i]-58)-key[i])%7)+58; 
  }
  
   else if(ct[i]>=91 && pt[i]<=96)
  {
   if((((ct[i]-91)-key[i])%6)<0)
   pt[i]=ct[i]-key[i]+6;
   else
    pt[i]=(((ct[i]-91)-key[i])%6)+91; 
  }
  
   else if(ct[i]>=123 && pt[i]<=126)
  {
   if((((ct[i]-123)-key[i])%4)<0)
   pt[i]=ct[i]-key[i]+4;
   else
    pt[i]=(((ct[i]-123)-key[i])%4)+123; 
  }
  
  // For space
  else
  pt[i]=ct[i]-127-key[i];
  
 }
 
 printf("\nActual Data: ");
 for(i=0;i<l;i++)
 {
  printf("%c",pt[i]);
 }
 
 getch(); // Linux user - Remove this

 return 0;
}

Share this

Related Posts

Previous
Next Post »