Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

I NEED ALL OF THEM. NO RECURSIVE, ONLY STRINGS. PLEASE DON'T ANSWER THE QUESTION IF YOU'RE NOT SURE ABOUT IT. THANK YOU. TASK 1: The

I NEED ALL OF THEM. NO RECURSIVE, ONLY STRINGS. PLEASE DON'T ANSWER THE QUESTION IF YOU'RE NOT SURE ABOUT IT.

THANK YOU.

TASK 1:

The Caesar cipher is a simple and widely known encryption technique. The action of a Caesar cipher is to replace each letter in the unencrypted message (called "plaintext" in cryptography) with a different one a fixed number of places down the alphabet. The resulting message is called "ciphertext". For example:

Plaintext: Hello, world! Ciphertext: Ebiil, tloia! The cipher illustrated above uses a left shift of three (or a right shift of 23), so that (for example) each occurrence of E in the plaintext becomes B in the ciphertext. Write a C++ function to implement the Caesar cipher, using the prototype:

precond: numpos>=0 and rshift<=26 postcond: the return value is the encrypted version of orig using the caesar(rshift) cipher string encryptCaesar(string orig, int rshift);

Your function should preserve case, and any non-alphabetic characters should be left unchanged. For example, encryptCaesar("Hello, world!",23) = "Ebiil, tloia!". You may write additional helper functions if you wish (and it will help you in later tasks). For example, one useful function may be to shift a single character some number of positions. Remember: Separation of Concerns!

TASK 2:

In the Caesar cipher, each letter is always shifted by the same value. What if we shifted each letter by a different value? A cipher known as the Vigenere cipher consists of several Caesar ciphers in sequence with different shift values. For example, we might shift the first letter of the plaintext to the right by five, the second by 17, etc. The sequence is defined by a keyword where each letter defines the shift value. If a letter in the keyword is the nth letter in the alphabet, then each ciphertext letter will be the corresponding plaintext letter shifted to the right by n-1. For example, suppose that the plaintext to be encrypted is: Hello, world! ...and the person sending the message chooses the keyword "cake". The first letter of the keyword is 'c', and 'c' is the third letter of the alphabet. That means we shift the first letter of the plaintext to the right by 3-1 = 2, which makes the first letter of the ciphertext 'J'. Then repeat for the remaining letters. If we reach the end of the keyword, go back and use the first letter of the keyword. Following these steps, the resulting ciphertext is: Jevpq, wyvnd! Write a C++ function to implement the Vigenere cipher. You may make your own prototype though it should return the encrypted string as above. Again, your function should preserve case, and any non-alphabetic characters should be left unchanged.

TASK 3:

Write decryption functions corresponding to the above.

TASK 4:

Write a driver program to test your code. This program should prompt/input a string, output the encrypted strings, and check that encrypting and decrypting a string results in the original string. Pseudocode for main is: Loop the following until the user inputs ctrl-d (EOF) Prompt for string Input string s Prompt for a character to indicate which type of cipher the user wants, and appropriate parameters. Encrypt s and output Decrypt the result and check that it is the same as s. Also output it.

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Practical Issues In Database Management A Refernce For The Thinking Practitioner

Authors: Fabian Pascal

1st Edition

0201485559, 978-0201485554

More Books

Students also viewed these Databases questions