Data Encryption (Strings and Bitwise Operators)
Write a C program that uses bitwise operators (e.g. bitwise XOR) to
encrypt/decrypt a message.
The program will prompt the user to select one of the following
menu options:
1. Enter and encrypt a message
2. View encrypted message
3. Decrypt and view the message (NOTE: password protected)
4. Exit
If the user selects option 1, he/she will be prompted to enter a
message (a string up to 50 characters long). The program will next
encrypt/modify each character of this message before it will be
stored into the memory.
If selecting option 2, the user will be able to view on the screen
the decrypted message that is stored in the memory.
If the user selects option 3, he/she will then be prompted to enter
a password in order to view the original message. (Use “PRG255” as
a password.) The user should be limited to three attempts to enter
the password. If the user enters the correct password, the program
will decrypt the encrypted message and display the original
message. If an incorrect password is entered three times the
program should show an appropriate message (e.g. “Incorrect
password entered three times! Program will terminate now!”) and
terminate.
This process will continue until the user chooses the Exit option 4
to terminate the program
NOTE: One of the methods of data encryption uses the XOR bitwise
operator with a mask value (an integer number) to encrypt every
character of the message and the same operation should be used to
decrypt the message.
It is required to submit your source code file, i.e. Lab4.c file as
well as a file with your program's run screen captures.
BONUS MARKS:
When message and password are entered by the user the program
should NOT display these strings on the screen when they are
entered, instead the program will print on the screen a single
asterisk (*) representing each character entered. Please note that
the actual characters entered by the user will be properly stored
in the memory.
A sample run of the program with bonus marks could be as
follows:
1. Enter and encrypt a message
2. View encrypted message
3. Decrypt and view the message (NOTE: password protected)
4. Exit
Please select an option => 1
Enter a message => ***********
Please select an option => 3
Enter Password => ******
Message entered: LAB4 PRG255
C Program:
#include<stdio.h>
#include <stdlib.h>
#include<string.h>
#include<conio.h>
int main(void){
char password[10]="PRG255";
int at=0;
char msg[50];
printf("1.Enter and encrypt a message\n");
printf("2.View encrypted message\n");
printf("3.Decrypt and view the message\n");
printf("4.Exit\n");
int f=1;
while(f==1)
{
int ch;
printf("Please select an option=>:");
scanf("%d",&ch);
while(getchar()!='\n');
switch(ch)
{
case 1:
printf("Enter a message=>");
int i=0;
do
{
msg[i]=getch()^5;
if(msg[i]^5!='\r')
{
printf("*");
}
i++;
}while((msg[i-1]^5)!='\r');
printf("\n");
break;
case 2:
printf("Decrypted message: %s\n",msg);
break;
case 3:
printf("Enter Password=>");
i=0;
char p[50];
do
{
p[i]=getch();
if(p[i]!='\r')
{
printf("*");
}
i++;
}while(p[i-1]!='\r');
p[i-1]='\0';
printf("\n");
if(strcmp(p,password)!=0)
{
printf("Wrong Password\n");
at++;
if(at>2)
{
printf("Incorrect Password entered three times!Program will terminate now!\n");
f=0;
}
break;
}
printf("Message entered:");
int pi=0;
while((msg[pi]^5)!='\r')
{
printf("%c",msg[pi]^5);
pi++;
}
printf("\n");
break;
case 4:
f=0;
break;
default:
printf("Wrong option!Enter between 1 to 4\n");
}
}
printf("Program Terminated\n");
return 0;
}
Sample Output:
Get Answers For Free
Most questions answered within 1 hours.