Ask Computer Network & Security Expert

Please do not omit coding structure and please write a main method for it. Also,

Question: Cipher

Caesar's cipher is a very well known and simple encryption scheme. The point of an encryption scheme is to transform a message so that only those authorized will be able to read it. Caesar's cipher conceals a message by replacing each letter in the original message (the plaintext), by a letter corresponding to a certain number of letters to the right on the alphabet.

Of course, the message can be retrieved by replacing each letter in the encoded message (the ciphertext) with the letter corresponding to the same number of position to the left on the alphabet.

To achieve this, the cipher has a key that needs to be kept private. Only those with the key can encode and decode a message. Such a key determines the shift that needs to be performed on each letter. For example, here is how a string containing the entire alphabet will be encrypted using a key equal to 3:

Original: abcdefghijklmnopqrstuvwxyz
Encrypted: defghijklmnopqrstuvwxyzabc

Vigenere's cipher is a slightly more complex encryption scheme, also used to transform a message. The key of this cipher consists of a word and the cipher works by applying multiple Caesar ciphers based on the letters of the keyword. Each letter can be associated with a number corresponding to its position in the English alphabet (counting from 0). For instance, the letter `a' is associated to 0, `c' to 2, and `z' to 25. Therefore, the keyword of the cipher will provide as many integers as letters in the word and these integers will be used to implement different Caesar ciphers.

Let's see how: suppose the message to encrypt is "elephants" and the keyword is "rats". The first thing to do is to repeat the keyword until its length matches the one of the message.

Message: e l e p h a n t s
Keyword: r a t s r a t s r

Now, each letter of "ratsratsr" is associated to both a letter in the message and an integer. We can encrypt each letter of the message using a Caesar cipher where the key corresponds to the integer associated to it through the keyword. In this case `r' corresponds to 17, so the first letter of the message which is an `e' will be encrypted using a `v', the second letter `l' as an `l' since `a' is associated to 0, and so on. The entire message will be encrypted as "vlxhyaglj".

The goal of this exercise is to write several methods in order to create a program that encodes and decodes messages using Caesar's and Vigenere's ciphers. For the purpose of this exercise we will only consider messages written using lower case letters and blank spaces. All the code for this question must be placed in a file named Cipher.java.

a. Encoding a character

Let's start by writing a simple method called charRightShift which takes a character and an integer n as inputs, and returns a character. The method should verify that the integer is a number between 0 and 25 (both included). If that's not the case, the method should print out an error message and return the character with ASCII value 0.

Note that ASCII value 0 is not '0', but is the char that maps to the value 0! Otherwise, if the character received as input is a lower case letter of the English alphabet, the method will return the letter of the alphabet which is n positions to the right on the alphabet. If the character received as input is not a lower case letter of the English alphabet, then the method returns the character itself with no modification.

For example:

charRightShift(`g', 2 ) returns `i',
charRightShift(`#', 2 ) returns `#', and
charRightShift(`h', 32 ) returns the character with ASCII 0 and prints an error message.

b. Decoding a character

Write a method charLeftShift which practically reverses what the previous method does. This method also takes a character and an integer n as inputs, and returns a character. The method should verify that the integer is a number between 0 and 25 (both included).

If that's not the case it should print out an error message and return the character with ASCII value 0. Note that ASCII value 0 is not '0', but is the char that maps to the value 0!

Otherwise, if the character received as input is a lower case letter of the English alphabet, the method will return the letter of the alphabet which is n positions to the left on the alphabet. If the character received as input is not a lower case letter of the English alphabet, then the method returns the character itself with no modification.

For example:

charLeftShift(`i', 2 ) returns `g',
charLeftShift(`#', 2 ) returns `#', and
charLeftShift(`h', 32 ) returns the character with ASCII 0 and prints an error message.

Note: The two methods above are very similar. This suggests that you write one common method charShift which contains the shifting logic and can shift both left and right. Then charRightShift can simply call charShift with a positive n, and charLeftShift can call charShift with a negative version of n.

c. Caesar's cipher - Encoding

Write a method caesarEncode that takes a String message and an int key as inputs and returns the string obtained by encrypting message using the Caesar's cipher with key equal to key. To create the encrypted string you need to replace each letter in message, by the letter corresponding to key letters to the right on the alphabet. You should call and use charRightShift appropriately in order to get full points.

The input key must be an integer from 0 to 25 (included). Your method should print out an error message and return the empty string if that's not the case.

For the purpose of this exercise you can assume that the strings to encrypt will only contain letters from the English alphabet in lower case and blank spaces. Blank spaces don't get modified by the encryption.

For example, caesarEncode(``cats and dogs'', 5) should return ``hfyx fsi itlx''.

d. Caesar's cipher - Decoding

Write a method caesarDecode that takes a String message and an int key as inputs and retunrs the string obtained by decrypting message using the Caesar's cipher with key equal to key.

To decrypt the string you need to replace each letter in message, by the letter corresponding to key letters to the left on the alphabet. To get full points, you should call and use the method charLeftShift appropriately.

As for caesarEncode, the key must be a number between 0 and 25. Your method should print an error message and return an empty string if that's not the case. More over, you can expect strings to contain only lower case letters from the English alphabet and blank spaces which will not be modi ed by the decryption (as they were not modified by the encryption).

For example, caesarDecode(``hfyx fsi itlx'', 5) should return ``cats and dogs''.

e. From String to keys

Write a method called obtainKeys which takes a String as input and returns an array of integers. The size of the array will be equal to the length of the String. The elements of the array correspond to the position (counting from 0) of each character in the String as a letter of the English alphabet.

For instance obtainKeys(``hello'') returns [7, 4, 11, 11, 14].

For the purpose of this exercise you can assume that the input String to this method will only contain lower case letters of the English alphabet.

f. Vigenere's cipher - Encoding

Write a method vigenereEncode that takes a String message and a String keyword as inputs and returns the string obtained by encrypting message using the Vigenere's cipher with key equal to keyword.

Remember that this cipher rst associates each letter of the keyword to a letter of the message. Then it shifts (to the right) each letter of the message by the number of positions determined by the corresponding letter in the keyword. Use the methods obtainKeys and charRightShift appropriately in order to implement the encryption.

The input keyword must contain only characters from the lower case English alphabet. Your method should print out an error message and return the empty string if that's not the case.

For the purpose of this exercise you can assume that the strings to encrypt will only contain letters from the English alphabet in lower case and blank spaces. Blank spaces don't get modi ed by the encryption.

For example, vigenereEncode(``elephants and hippos'', ``rats'') should return ``vlxhyagljtfu aagphk''.

g. Vigenere's cipher - Decoding

Finally, write a method vigenereDecode that takes a String message and a String keyword as inputs and returns the string obtained by decrypting the message using the Vigenere's cipher with key equal to keyword. Remember that this cipher rst associates each letter of the keyword to a letter of the message.

Then it shifts (to the left) each letter of the message by the number of positions determined by the corresponding letter in the keyword. Use the methods obtainKeys and charLeftShift appropriately in order to implement the decryption.

Again, the input keyword must contain only characters from the lower case English alphabet. Your method should print out an error message and return the empty string if that's not the case.

For the purpose of this exercise you can assume that the strings to decrypt will only contain letters from the English alphabet in lower case and blank spaces.

For example, vigenereDecode(``vlxhyaglj tfu aagphk'', ``rats'') should return ``elephants and hippos''.

Computer Network & Security, Computer Science

  • Category:- Computer Network & Security
  • Reference No.:- M93086372

Have any Question?


Related Questions in Computer Network & Security

Security challenges in emerging networksassignment

Security Challenges in Emerging Networks Assignment Description The purpose of this assignment is to develop skills to independently think of innovation. In this assignment students will first learn how to develop knowle ...

Security challenges in emerging networksassignment

Security Challenges in Emerging Networks Assignment Description The purpose of this assignment is to develop skills to independently think of innovation. In this assignment students will first learn how to develop knowle ...

Security challenges in emerging networksassignment

Security Challenges in Emerging Networks Assignment Description The purpose of this assignment is to develop skills to independently think of innovation. In this assignment students will first learn how to develop knowle ...

Security challenges in emerging networksassignment

Security Challenges in Emerging Networks Assignment Description The purpose of this assignment is to develop skills to independently think of innovation. In this assignment students will first learn how to develop knowle ...

Advanced network design assessment - human factors in

Advanced Network Design Assessment - Human factors in network analysis and design Purpose of the assessment - This assignment is designed to assess students' knowledge and skills related to the following learning outcome ...

Advanced network design assessment - human factors in

Advanced Network Design Assessment - Human factors in network analysis and design Purpose of the assessment - This assignment is designed to assess students' knowledge and skills related to the following learning outcome ...

Assignment descriptionproject scope a typical network

Assignment Description Project Scope: A typical network layout diagram of a firm is given below for illustrative purposes only. The service requirements are enclosed. Figure. Network layout of a firm Service requirements ...

Assignment descriptionproject scope a typical network

Assignment Description Project Scope: A typical network layout diagram of a firm is given below for illustrative purposes only. The service requirements are enclosed. Figure. Network layout of a firm Service requirements ...

After reading this weeks materials please respond to two 2

After reading this week's materials, please respond to TWO (2) of the following questions. AND PROVIDE CITATION IN APA 1. Describe the differences between bus, ring, star and mesh topologies. 2. Explain the TCP/IP Model ...

The abstract should not be more than 250 words describe

The abstract should not be more than 250 words. Describe your project, focusing on research questions and research method for next stage of the project. 1. Introduction [The introduction should describe what the project ...

  • 4,153,160 Questions Asked
  • 13,132 Experts
  • 2,558,936 Questions Answered

Ask Experts for help!!

Looking for Assignment Help?

Start excelling in your Courses, Get help with Assignment

Write us your full requirement for evaluation and you will receive response within 20 minutes turnaround time.

Ask Now Help with Problems, Get a Best Answer

Why might a bank avoid the use of interest rate swaps even

Why might a bank avoid the use of interest rate swaps, even when the institution is exposed to significant interest rate

Describe the difference between zero coupon bonds and

Describe the difference between zero coupon bonds and coupon bonds. Under what conditions will a coupon bond sell at a p

Compute the present value of an annuity of 880 per year

Compute the present value of an annuity of $ 880 per year for 16 years, given a discount rate of 6 percent per annum. As

Compute the present value of an 1150 payment made in ten

Compute the present value of an $1,150 payment made in ten years when the discount rate is 12 percent. (Do not round int

Compute the present value of an annuity of 699 per year

Compute the present value of an annuity of $ 699 per year for 19 years, given a discount rate of 6 percent per annum. As