Advertisement
steverobinson

Encrypt and Decrypt [Selwyn Steve]

Oct 12th, 2010
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.38 KB | None | 0 0
  1. #include <iostream.h>
  2. #include <string.h>
  3. #include <conio.h>
  4. #include <cstdlib>
  5.  
  6. class string
  7. {
  8.     public:
  9.         char a,b;
  10. };
  11.  
  12.  
  13. int main()
  14. {
  15.     char str_src[100],str_dest[150],string_temp[150],*choice;
  16.     string str_mat[9][9];
  17.     int i,order,j,k,m,c,len;
  18.     fflush(stdin);
  19.     gets(choice);
  20.  
  21.     if(strcmp(choice,"ENCODE")==0)
  22.     {
  23.             fflush(stdin);
  24.             cin.getline(str_src,100);
  25.  
  26.             len=strlen(str_src);
  27.  
  28.             order=1;
  29.             while(order*order<(len+1)/2)
  30.                 order+=2;
  31.             for(i=len;i<order*order*2;i++)
  32.                 str_src[i]='/';
  33.             str_src[i]=0;
  34.             k=0;
  35.             for(i=0;i<order;i++)
  36.                 for(j=0;j<order;j++)
  37.                 {
  38.                     str_mat[i][j].a=str_src[k];
  39.                     str_mat[i][j].b=str_src[k+1];
  40.                     k+=2;
  41.                 }
  42.  
  43.           str_dest[0]=str_mat[order/2][order/2].a;
  44.           str_dest[1]=str_mat[order/2][order/2].b;
  45.  
  46.           i=order/2;
  47.           m;
  48.           j=order/2;
  49.           k=2;
  50.           c=1;
  51.           while(c<order)
  52.           {
  53.               for(m=1;m<=c;m++)
  54.               {
  55.                   j--;
  56.                   str_dest[k]=str_mat[i][j].a;
  57.                   str_dest[k+1]=str_mat[i][j].b;
  58.                   k+=2;
  59.               }
  60.               for(m=1;m<=c;m++)
  61.               {
  62.                   i--;
  63.                   str_dest[k]=str_mat[i][j].a;
  64.                   str_dest[k+1]=str_mat[i][j].b;
  65.                   k+=2;
  66.               }
  67.               c++;
  68.               for(m=1;m<=c;m++)
  69.               {
  70.                   j++;
  71.                   str_dest[k]=str_mat[i][j].a;
  72.                   str_dest[k+1]=str_mat[i][j].b;
  73.                   k+=2;
  74.               }
  75.               for(m=1;m<=c;m++)
  76.               {
  77.                   i++;
  78.                   str_dest[k]=str_mat[i][j].a;
  79.                   str_dest[k+1]=str_mat[i][j].b;
  80.                   k+=2;
  81.               }
  82.               c++;
  83.           }
  84.           for(m=1;m<order;m++)
  85.           {
  86.             j--;
  87.             str_dest[k]=str_mat[i][j].a;
  88.             str_dest[k+1]=str_mat[i][j].b;
  89.             k+=2;
  90.           }
  91.           str_dest[order*order*2]=0;
  92.           cout<<endl<<str_dest;
  93.     }
  94.     else if(strcmp(choice,"DECODE")==0)
  95.     {
  96.         fflush(stdin);
  97.         cin.getline(str_dest,150);
  98.         //strcpy(str_dest,string_temp);
  99.         len=strlen(str_dest);
  100.         order=1;
  101.         while((order*order)<len/2)
  102.             order+=2;
  103.         str_mat[order/2][order/2].a=str_dest[0];
  104.         str_mat[order/2][order/2].b=str_dest[1];
  105.         i=order/2;
  106.           m;
  107.           j=order/2;
  108.           k=2;
  109.           c=1;
  110.           while(c<order)
  111.           {
  112.               for(m=1;m<=c;m++)
  113.               {
  114.                   j--;
  115.                   str_mat[i][j].a=str_dest[k];
  116.                   str_mat[i][j].b=str_dest[k+1];
  117.                   k+=2;
  118.               }
  119.               for(m=1;m<=c;m++)
  120.               {
  121.                   i--;
  122.                   str_mat[i][j].a=str_dest[k];
  123.                   str_mat[i][j].b=str_dest[k+1];
  124.                   k+=2;
  125.               }
  126.               c++;
  127.               for(m=1;m<=c;m++)
  128.               {
  129.                   j++;
  130.                   str_mat[i][j].a=str_dest[k];
  131.                   str_mat[i][j].b=str_dest[k+1];
  132.                   k+=2;
  133.               }
  134.               for(m=1;m<=c;m++)
  135.               {
  136.                   i++;
  137.                   str_mat[i][j].a=str_dest[k];
  138.                   str_mat[i][j].b=str_dest[k+1];
  139.                   k+=2;
  140.               }
  141.               c++;
  142.           }
  143.           for(m=1;m<order;m++)
  144.           {
  145.             j--;
  146.             str_mat[i][j].a=str_dest[k];
  147.             str_mat[i][j].b=str_dest[k+1];
  148.             k+=2;
  149.           }
  150.           k=0;
  151.           for(i=0;i<order;i++)
  152.                 for(j=0;j<order;j++)
  153.                 {
  154.                     if(str_mat[i][j].a!='/')
  155.                     {
  156.                         str_src[k]=str_mat[i][j].a;
  157.                         k++;
  158.                     }
  159.                     if(str_mat[i][j].b!='/')
  160.                     {
  161.                             str_src[k]=str_mat[i][j].b;
  162.                             k++;
  163.                     }
  164.                 }
  165.  
  166.             str_src[k]=0;
  167.             cout<<endl<<str_src;
  168.  
  169.  
  170.     }
  171.  
  172.  
  173.  
  174.   getch();
  175.   return 0;
  176.  
  177. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement