Hello to all
programmers:
I have been working on the following
program but I am encountering some difficulties any help whatsoever would be greatly appreciated. My difficulty is that when I run the program, it does not perform the encryption nor decryption on the file I type in. Is something wrong with my functions? I can't figure the problem!
My instructions are:
Write a c++ program,
1. Prompts the user for a choice of
encrypt or decrypt, prompts for the input and output filenames
2. has a function for
encryption
a. generates a random key
b. stores the key in the
encrypted file
c. encrypts the
data from the input file by performing xor of the key with every byte from the input file
3. has a function for decryption
a. reads the key from the
encrypted file
b. decrypts the data from the input file by performing xor of the key wit every byte from the file
4. performs the encryption or decryption based on the user's choice.
#include<iostream>
#include<string>
#include<ctime>
#include<cstdlib>
#include<fstream>
usingnamespace std;
void encrypt(char inname[80], char outname[80]);
void decrypt(char inname[80], char outname[80]);
int decryptencrypt;
char inname[80], outname[80];
void main()
{
srand((
unsigned)time(NULL));
cout <<
"Enter 1 to decrypt" << endl;
cout <<
"Enter 2 to encrypt" << endl;
cin >> decryptencrypt;
cout <<
"Enter the input filename" << endl;
cin >> inname;
cout <<
"Enter the output filename" << endl;
cin >> outname;
if(decryptencrypt == 1)
{
decrypt( inname, outname);
}
else if(decryptencrypt == 2)
encrypt( inname, outname);
}
void encrypt(char inname[80], char outname[80]){
ifstream in;
ofstream out;
in.open(inname);
out.open(outname);
char key = rand() % 255;
out << key;
char c;
in.get(c);
while(in != 0)
{
out << (c ^ key);
in.get(c);
}
return;
}
void decrypt(char inname[80], char outname[80]){
ifstream in;
ofstream out;
in.open(inname);
out.open(outname);
char key;
in.get(key);
// Read the key out of the encrypted file
char c;
in.get(c);
while(in != 0)
{
out << (c ^ key);
// Do XOR to restore it to its original values
in.get(c);
}
return;
}