Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Random alphabet cipher. The Caesar cipher, which shifts all letters by a fixed a

ID: 3566745 • Letter: R

Question

Random alphabet cipher. The Caesar cipher, which shifts all letters by a fixed amount, is far too easy to crack. Here is a better idea. As the key, don't use numbers but words. Suppose the key word is FEATHER. Then first remove duplicate letters, yielding FEATHR, and append the other letters of the alphabet in reverse order:

Now encrypt the letters as follows:

Write a program that encrypts or decrypts a file using this cipher. For example,

decrypts a file using the keyword FEATHER. It is an error not to supply a keyword.

*Use introduction level programming to solve this problem.

Need to retain capitolization and punctuation in encrypt and decrypt (C++ Language)

Random alphabet cipher. The Caesar cipher, which shifts all letters by a fixed amount, is far too easy to crack. Here is a better idea. As the key, don't use numbers but words. Suppose the key word is FEATHER. Then first remove duplicate letters, yielding FEATHR, and append the other letters of the alphabet in reverse order: decrypts a file using the keyword FEATHER. It is an error not to supply a keyword. *Use introduction level programming to solve this problem. Need to retain capitolization and punctuation in encrypt and decrypt (C++ Language) Write a program that encrypts or decrypts a file using this cipher. For example, Now encrypt the letters as follow

Explanation / Answer

#include <stdio.h>
#include <ctype.h>

#define MAXSIZE 1024

void encrypt(char*);
void decrypt(char*);

int menu();

int
main(void)
{

char c,
choice[2],
s[MAXSIZE];

while(1)
{
menu();

gets(choice);

if((choice[0]=='e')||(choice[0]=='E'))
{
puts("Input text to encrypt->");
gets(s);
encrypt(s);
}
else if((choice[0]=='d')||(choice[0]=='D'))
{
puts("Input text to decrypt->");
gets(s);
decrypt(s);
}
else
break;
}

return 0;
}

void encrypt(char*str)
{
   int n=0;
   char *p=str,
       q[MAXSIZE];

   while(*p)
   {
   if(islower(*p))
   {
       if((*p>='a')&&(*p<'x'))
           q[n]=toupper(*p + (char)3);
       else if(*p=='x')
           q[n]='A';
       else if(*p=='y')
           q[n]='B';
       else
           q[n]='C';
   }
   else
   {
       q[n]=*p;
   }
   n++; p++;
   }
   q[n++]='';
   puts(q);
}

void decrypt(char*str)
{
   int n=0;
   char *p=str,
       q[MAXSIZE];

   while(*p)
   {
   if(isupper(*p))
   {
       if((*p>='D')&&(*p<='Z'))
           q[n]=tolower(*p - (char)3);
       else if(*p=='A')
           q[n]='x';
       else if(*p=='B')
           q[n]='y';
       else
           q[n]='z';
   }
   else
   {
       q[n]=*p;
   }
   n++; p++;
   }
   q[n++]='';
   puts(q);
}