1. You must ask the user if they want to perform an encryption or decryption ope
ID: 3533328 • Letter: 1
Question
1. You must ask the user if they want to perform an encryption or decryption operation.
2. You must ask the user to enter the name of the file they want to encrypt or decrypt.
3. You must get an encryption key from the user which can be up to 128 characters. The key must be all lower case alphabetic characters.
4. You must have a function which takes the encryption key and creates an encryption map from it. For each character in the encryption key string, subtract the lower case letter 'a' and store the result in the corresponding encryption map array.
5. You must have a function which takes the encryption key and creates a decryption map from it. For each character in the encryption key string, subtract the lower case letter 'a' from it. Then subtract that result from 26 and store the value in the corresponding decryption map array.
6. You must have a function which will do the encryption or decryption transformation. This function takes the following parameters:
A constant C string containing the line of text to be transformed.
A constant C character array which contains the encryption or decryption map.
An integer which contains the length of the encryption map.
A string reference (output) which will contain the encrypted or decrypted string upon completion.
The core of the encryption / decryption algorithm is as follows:
For each character (the ith character) in the text input line do the following:
if the character is not alphabetical, add it to the end of the output string
if the character is lower case alphabetical
subtract the character 'a' from the character
get the ith % map length element from the map and add it to the character
adjust the value of the character % 26 to keep it within the alphabet
add the character 'a' to the character
add the encrypted character value to the end of the output string
if the character is upper case alphabetical
do the same thing as for lower case except use 'A' instead of 'a'
7. For decryption, the main program should create an ifstream for the file to be decrypted. It should use the getline method of the ifstream to read lines from the file, call the encryption / decryption function with the line to be decrypted, and display the string which contains the result of the encryption / decryption function call. Repeat until the ifstream reaches the end of the file, then close the ifstream.
8. For encryption, the main program should create an ifstream for the file to be encrypted. It should also create an ofstream for the file where the encrypted result will be stored. The file name for this file can be gotten from the user or can be the input file name with a special extension added at the end. The getline method of the ifstream is used to read lines from the input file. Then the encryption / decryption function is called to encrypt the line. Display the string containing the result and write the string to the ofstream. Close the ifstream and ofstreams when finished.
9. Make sure that your program allows the user to encrypt / decrypt more than one file per session. This means adding a loop which allows the entire program to repeat until the user has nothing more to do.
Explanation / Answer
see if this code serves the purpose:
#include<fstream.h>
#include<conio.h>
#include<stdio.h>
int main()
{
char name[30],target[30],ch,mod; //Declare
Variables
int num[100],i,option;
cout<<"Enter Your Option ";
cout<<"
1. To Encrypt The File ";
cout<<"
2. To Decrypt The File ";
cout<<"
Option : ";
cin>>option;
if(option==1)
{
cout<<"Enter The Path Of A File Which Is To Be Encrypted : ";
gets(name);
ifstream fin(name,ios::binary); //Open The
Input File In A Binary Mode
if(!fin)
{ //Show
Error
Occur If File Does Not Exist
cout<<"
Error In Openinig Of A File : "; //Or Any
Error
Occurs
return 1;
}
cout<<"
Enter The New Encrypted File Name : ";
gets(target);
ofstream fout(target,ios::binary); //Open The
OutPut File In A Binary Mode
if(!fout)
{
cout<<"
Error In Opening Of Target File : "; //Show Error
If
Any Error Occrs In Opening Of A File
return 1;
}
for(i=0;i<9;i++)
{ //Multiple
For
Loops For Storing The Numbers
num[i]=i; //In An
Array
}
for(i=14;i<31;i++) //Loops Will
Store 100 Numbers
{
num[i-5]=i; //Which Will
Encrypt The Contents Of A File
}
for(i=33;i<=68;i++) //To Avoid
The
Error Ocuur Caused By The
{ //Enter Key
,
Tab Key & Space Key
num[i-7]=i; //These
Variations In Loops Is Made
}
for(i=97;i<=122;i++)
{
num[i-35]=i;
}
while(fin)
{ //Open The
Input
File
fin.get(ch);
if(ch==EOF)break; //Exit To Loop
When End Of File
if((ch>=97) && (ch<=122))
{ //Encrypt The
Small
Letters
i=97;
mod=num[ch-i];
fout<<mod;
}
if((ch>=65) && (ch<=90))
{
i=39; //Encrypt The
Capital Letters
mod=num[ch-i]; //And Store In
An
Output File
fout<<mod;
}
if((ch>=48) && (ch<=57))
{
i=4; //Encrypt The
Numbers
mod=num[ch+i];
fout<<mod;
}
if((ch==10)||(ch==13))
{
mod=ch; //For Enter Key
fout<<mod;
}
if(ch==32)
fout<<ch; //For Space Key
if(ch==9)
fout<<ch; //For Tab Key
if((ch>=33)&&(ch<=47))
{ //For Special
Symbols
mod=ch+64;
fout<<mod;
}
if((ch>=58)&&(ch<=64))
{ //For Special
Symbols
mod=ch+54;
fout<<mod;
}
if((ch>=91)&&(ch<=96))
{
mod=ch+28; //For Special
Symbols
fout<<mod;
}
if((ch>=123)&&(ch<=126))
{
mod=ch-40; //For Special
Symbols
fout<<mod;
}
}
fin.close(); //Close The Input
File
fout.close(); //Close The
Output
File
cout<<"
Your File Is Encrypted Now........... ";
getch();
return 0;
}
/*========================================================================
=======================================*/
/* This Program Will Decrypt The Document */
if(option==2)
{
char name[30],target[30],ch,mod; //Declare
Variables
int num[100],i,flag;
cout<<"Enter The Path Of A File Name Which Is To Be Decrypted : ";
gets(name);
ifstream fin(name,ios::binary);
if(!fin) //Open The
Encryped File In A Binary Mode
{
cout<<"Error In Opening Of A File : ";
return 1; //Show
Error
If File Does Not Exist
} //Or Any
Occurs In Opening Of A File
cout<<"
Enter The New Decrypted File Name : ";
gets(target);
ofstream fout;
fout.open(target,ios::binary); //Opens The
Output File In An Binary Mode
if(!fout)
{ //Show
Error
If Any Error Occurs In Opening Of A File
cout<<"Error In Opening Of A Target File : ";
return 1;
}
for(i=0;i<9;i++)
{ //Same
Multiple For Loops For Storing The Numbers
num[i]=i; //In An
Array
}
for(i=14;i<31;i++)
{
num[i-5]=i; //Loops
Will
Store 100 Numbers
}
for(i=33;i<=68;i++) //Which
Encrypts The Document Also Decrypt It
{
num[i-7]=i;
}
while(fin)
{ //Opens The
Encryped File
fin.get(ch);
flag=0; //Turn
Off
Flag
if(ch==EOF)break;
for(i=26;i<52;i++)
{
if(ch==num[i]) //Loop For
Match The Small Letters Letters
{
mod=i+39; //If Match
Then
Put Appropriate Letter
fout<<mod; //In A OutPut
File
flag=1; break ; //Turn On
Flag And Exit The Loop
}
}
if (flag==1) continue ; //If
Flag
Is On Then Continue Outer Loop
for(i=0;i<26;i++)
{ //Loop For
Match The Capital Letters
if(ch==num[i])
{ //If Match
Then
Put Appropriate Letter
mod=i+97; //In A OutPut
File
fout<<mod;
flag=1;break; //Turn On
Flag
And Exit From This Loop
}
}
if (flag==1) continue ; //If Flag
Is
On Then Continue Outer Loop
for(i=52;i<62;i++)
{ //Loop For
Numerical Numbers
if(ch==num[i])
{
mod=i-4;
fout<<mod;
flag=1; break ;
}
}
if (flag==1) continue ;
if((ch==10)||(ch==13))
{
mod=ch; //Condition For
Enter Key
fout<<mod;
}
if(ch==32)
fout<<ch; //Condition For
Space Key
if(ch==9)
fout<<ch; //Condition For
Tab
Key
if((ch>=97)&&(ch<=111))
{
mod=ch-64; //For Special
Symbols
fout<<mod;
}
if((ch>=112)&&(ch<=118))
{
mod=ch-54; //For Special
Symbols
fout<<mod;
}
if((ch>=119)&&(ch<=124))
{
mod=ch-28; //For Special
Symbols
fout<<mod;
}
if((ch>=83)&&(ch<=86))
{ //For Special
Symbols
mod=ch+40;
fout<<mod;
}
}
fin.close(); //Close The
Encrypted
File
fout.close(); //Close Your
Original
Decrypted File
cout<<"
The File Is Being Decrypted............ ";
getch();
return 0;
}
return 0;
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.