Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

The Vigen re cipher is a method of encrypting alphabetic text using a series of interwoven Caesar ciphers, based on letters of a keyword. Notice

The Vigenre cipher is a method of encrypting alphabetic text using a series of interwoven Caesar ciphers, based on letters of a keyword.
Notice how in a caesar cipher, you shifted the alphabet by some integer value. Consider a mapping that maps alphabetic letters into numbers (and vice versa). The main difference between a Vigenre cipher and the Caesar cipher, is that the Vigenre cipher changes the shift value for every character, depending on a key.
Example of a Vigenre Cipher
Consider the following Example of a Vigenre Cipher
Consider the following\end{array}]
Ciphertext:
rijvsuyvin
But how did we get from the plaintext to the ciphertext?
Since the key in our cipher is smaller than our plaintext, we will need to expand it. We can do this by
just repeating it, which we can call a keystream.
Now (refer to the mappings from letters to numbers above), if we shift h by k, we get r, e by e
we get i and so on.
Noting that characters will wrap around (next character after Z is A), the ciphertext character at
some position i is given by,
ci=pi+kimod|k|
Where c is our ciphertext, p is our plaintext and k is our key. |k| is the length of our key. Requirements
Your program will be required to both encrypt and decrypt ciphertext. The mode is specified by a
program argument flag, -e for encrypt mode, and -d for decrypt mode.
Your program should work for both upper and lowercase plaintext/ciphertext/keys, even if the key
and plaintext/ciphertext do not have the same case as eachother.
Your program should also have another option for grouping output characters together. This can be
specified by the flag. What this will do is strip the ciphertext or plaintext of any non-
alphabetic characters and group the output into space-separated groups consisting of -d-e-d The precedence of argument error handling follows the order of: program mode, and then
grouping. That is, you only print one error even if there is more than one, following that order.
Examples
The # symbol denotes user input
$ python3
vigenere.py -e
Enter the key: #helloworld
Enter the plaintext: #The quick brown fox jumps over the lazy dog.
Ciphertext is: Alp bieqb muvay qct xlxsz sgpf pvv wdgc ozu.
$ python3
vigenere.py -d
Enter the key: #helloworld
Enter the ciphertext: #Alp bieqb muvay qct xlxsz sgpf pvv wdgc ozu.
Plaintext is: The quick brown fox jumps over the lazy dog.
Grouping
$ python3
vigenere.py -e -g 5
Enter the key: #helloworld
Enter the plaintext: #The quick brown fox jumps over the lazy dog.
Ciphertext is: ALPBI EQBMU VAYQC TXLXS ZSGPF PVVWD GCOZU
$ python3
vigenere.py -d -g 5
Enter the key: #helloworld $ python3
vigenere.py -d -g 5
Enter the key: #helloworld
Enter the ciphertext: #Alp bieqb muvay qct xlxsz sgpf pvv wdgc ozu.
Plaintext is: THEQU ICKBR OWNFO XJUMP SOVER THELA ZYDOG
$ python3
vigenere.py -e -g 5
Enter the key: #helloworld
Enter the plaintext: #The quick brown fox.
Ciphertext is: ALPBI EQBMU VAYQC T
In the third example, since we didn't have enough characters to make a full group, our last group
just wont have the full amount.
Errors
$ python3
vigenere.py -e -d
Error: Cannot have both encrypt and decrypt mode.
$ python3
vigenere.py -g 4
Error: Program mode was not specified. Use -e for encrypt and -d for decrypt.
$ python3
vigenere.py
Error: Program mode was not specified. Use -e for encrypt and -d for decrypt.
$ python3
vigenere.py -g-e
Error: You must supply an integer of at least zero with the grouping flag.It is okay for the user to not enter a message. The key is required, though. You should keep asking
for the key until a valid one is provided by the user.
image text in transcribed

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_2

Step: 3

blur-text-image_3

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

Structured Search For Big Data From Keywords To Key-objects

Authors: Mikhail Gilula

1st Edition

012804652X, 9780128046524

More Books

Students also viewed these Databases questions

Question

How do mechanistic models differ from interpretive models?

Answered: 1 week ago

Question

Prove equations (28.25), (28.26), and (28.27). AppendixLO1

Answered: 1 week ago

Question

To realize business outcomes before and after HRM adoption.

Answered: 1 week ago