Can someone assist me on this?
Encryption is widely used on the internet to protect user information being sent between a browser and a server, including passwords, payment information and other personal information that should be considered private. An encryption algorithm is applied to the plain text to generate cipher text that can’t be recognized easily. Decryption is simply the inverse of encryption.
We will practice the idea of encryption and decryption in this assignment based on string manipulation. Given a string plaintext, it is encrypted as following:
plaintext is first shifted right length()/2 positions (toward higher index).
Next each letter is changed:
If an uppercase letter: ‘A’->’Z’, ‘B’->’Y’, … ‘M’->’N’, ‘N’->’M’, …, ‘Y’->’B’, ‘Z’->’A’
If a lowercase letter: same idea as for uppercase letter. i.e. ‘a’ -> ‘z’, ‘b’->’y’, …, ‘y’->’b’, ‘z’->’a’
If a digit: same idea as for uppercase letter. i.e. ‘0’ ->’9′, ‘1’->’8′, ‘2’->’7′ …
Anything else remains the same.
For example, given a plain text of “Secret 12”, it’s changed into:
// index: 0 1 2 3 4 5 6 7 8
// S e c r e t ˽ 1 2
// length is 9, so shift 4 times toward right (9/2 is 4, int division. If length is 10, should shift 5 times)
// After shifting:
t ˽ 1 2 S e c r e
// next change each character:
g ˽ 8 7 H v x i v
Your program should include at least the following:
One function to encrypt a given plain text string as explained above. It should return a string containing the corresponding cipher text.
One function to decrypt a cipher text that has been encrypted as explained above. This function should return the decrypted text as a string.
You may add additional function(s) which is(are) necessary for your design.
Include in your main() one or more testing cases, with each testing case tests both the encryption function and the decryption function as shown below:
std::string str = “Secret 12”;
std::string secretStr = encrypt(str);
std::cout << “original: ” << str << ‘n’;
std::cout << “encrypted: ” << secretStr << ‘n’;
std::cout << “decrypted: ” << decrypt(secretStr) << ‘n’;
Your .cpp file should also contain:
Algorithms (pseudo code) for your encryption function as block comments at the beginning of your source code file. If you choose to draw flowchart, include it in your HW document instead.
/*IN*/, /*OUT*/, /*INOUT*/ comments to each function parameter.
Pre- and Post- condition comments for each function.
Provide at least three testing cases (sample input and expected output for each testing case) and explain why you pick those three. Provide screenshots of the execution matching your three testing cases.
Comment your program appropriately. Pay attention to the standard stuff like coding style, indention, heading, and curly braces.
Submission: 2 files
In one word/pdf document:
Three testing cases and rationale
Screenshot(s) of execution
One .cpp file: name it HW6_YourLastName.cpp
Use the rubric below to check the completeness of your work before turning it in.
Rubric: CS225, HW6
Item | Max
(Pts) |
Received
(Pts) |
Project (35 pts) | ||
Algorithm for encryption function, which matches your code | 2 | |
an encryption function | 2 | |
Encryption: shift the plain text correctly | 5 | |
Encryption: transform each character of the shifted string | 5 | |
Encryption: encryption result returned | 1 | |
a decryption function | 2 | |
Decryption: shift the cipher text correctly | 5 | |
Decryption: transform each character of the shifted string | 5 | |
Decryption: decryption result returned | 1 | |
Function prologue comment
Pre- and Post- condition comments function parameter type comment on each parameter |
3 | |
Three testing cases and rationale. | 3 | |
Your project compiles and runs | 1 | |
Programming style (5 pts)
File Prologue comments Consistent indentation: preferred 2 spaces for each level Meaningful names for constants and variables; Proper comments in the program |
1
1 3 |
|
Penalty | ||
using namespace std; | (- 4) | |
Global variable(s) | (- 4) | |
Missing required screenshot(s) | (- 4) | |
Total: | 40 |