Methods of encrypting and decrypting text

Assignment Help Basic Computer Science
Reference no: EM131984000

For this project you will be writing methods of encrypting and decrypting text.

PART 1 - NORMALIZE TEXT

The first thing we will do is normalize our input message so that it's easier to work with.

Using a method called normalizeText() which does the following:

1. Removes all the spaces from your text

2. Remove any punctuation (. , : ; ' " ! ? ( ) )

3. Turn all lower-case letters into upper-case letters

4. Return the result.

The call

normalizeText("This is some "really" great. (Text)!?")

should return

"THISISSOMEREALLYGREATTEXT"

PART 2 - CAESAR CIPHER

Next we'll be writing a Caesar Cipher. The Caesar cipher is just about the simplest encryption algorithm out there. A Caesar encription "shifts" each individual character forward by a certain number or "key". Each letter in the alphabet is shifted to the letter in the alphabet that is "key" places past the original letter. With a shift value of +1, the string "ILIKEZOOS" would be rendered as "JMJLFAPPT."

Using a method called caesarify that takes two parameters. The first argument is a string you want to encrypt, and the second is an integer that contains the shift value or "key". The function should return a string, which is the input string encrypted with the Caesar cypher using the shift value passed in its second argument. You may assume that the input string is normalized.

  • Note that the alphabet "wraps around", so with a shift value of +1 the "Z" in ZOOS became an A.
  • You can also have negative shift values, which cause the alphabet to previous letters. With a -1 shift, the string "ILIKEAPPLES" would turn into "HKHJDZOOKDR."

We will provide you with a function called shiftAlphabet. This function takes one argument, an integer to specify the shift value, and returns a string, which is the uppercase alphabet shifted by the shift value. So if you call shiftAlphabet(2), you will get back the following string: "CDEFGHIJKLMNOPQRSTUVWXYZAB"

Here is the implementation for shiftAlphabet, which you can just paste into your java file:

public static String shiftAlphabet(int shift) {

   int start = 0;

   if (shift < 0) {

       start = (int) 'Z' + shift + 1;

   } else {

       start = 'A' + shift;

   }

   String result = "";

   char currChar = (char) start;

   for(; currChar <= 'Z'; ++currChar) {

       result = result + currChar;

   }

   if(result.length() < 26) {

       for(currChar = 'A'; result.length() < 26; ++currChar) {

           result = result + currChar;

       }

   }

   return result;

}

PART 3 - CODEGROUPS

Traditionally, encrypted messages are broken into equal-length chunks, separated by spaces and called "code groups."

Using a method called groupify which takes two parameters. The first parameter is the string that you want to break into groups. The second argument is the number of letters per group. The function will return a string, which consists of the input string broken into groups with the number of letters specified by the second argument. If there aren't enough letters in the input string to fill out all the groups, you should "pad" the final group with x's. So groupify ("HITHERE", 2) would return "HI TH ER Ex".

  • You may assume that the input string is normalized.
  • Note that we use lower-case 'x' here because it is not a member of the (upper-case) alphabet we're working with. If we used upper-case 'X' here we would not be able to distinguish between an X that was part of the code and a padding X.

PART 4 - PUTTING IT ALL TOGETHER

Using a function called encryptString which takes three parameters: a string to be encrypted, an integer shift value, and a code group size. Your method should return a string which is its cyphertext equivalent. Your function should do the following:

  • Call normalizeText on the input string.
  • Call obify to obfuscate the normalized text.
  • Call caesarify to encrypt the obfuscated text.
  • Call groupify to break the cyphertext into groups of size letters.
  • Return the result

PART 5 - HACKER PROBLEM - DECRYPT

This part is not required for course credit.

Using a method called ungroupify which takes one parameter, a string containing space-separated groups, and returns the string without any spaces. So if you call ungroupify("THI SIS ARE ALL YGR EAT SEN TEN CEx") you will return "THISISAREALLYGREATSENTENCE"

Now using a function called decryptString which takes three parameters: a string to be decrypted and the integer shift value used to encrypt the string, and returns a string which contains the (normalized) plaintext. You can assume the string was encrypted by a call to encryptString().

So if you were to call

String cyphertext = encryptString("Who will win the election?", 5, 3);

String plaintext = decryptString(cyphertext, 5);

... then you'll get back the normalized input string "WHOWILLWINTHEELECTION".

Reference no: EM131984000

Questions Cloud

Preventing the spread of ransomware and protecting : What suggestions would you make for preventing the spread of ransomware and protecting your organizations data from falling victim.
How do you copy formulas with relative cell references : How do you copy formulas with relative cell references? Please be thorough in your responses.
How is the observation that ceos of corporations are : On Sept. 9, 2015, the Justice Department announced it will "will try harder to hold company executives responsible for corporate crimes."
Scraped twister posts from twister api : Through API I have scraped twister posts from twister API (containing only texts in the posts) and NO OTHER INFORMATION. I want to perform sentiment analysis
Methods of encrypting and decrypting text : For this project you will be writing methods of encrypting and decrypting text.
Pseudocode for a collection manager program : Need help with writting Pseudocode for a Collection Manager Program.
What is the present value when the annual increase : If the interest rate is 6%, what is the present value when the annual increase is $5,000? and when the annual increase is 10%?
Describe the difference between an inner join : Describe the difference between an INNER JOIN, a RIGHT JOIN, and a LEFT JOIN. Provide a business example where you would want to use each type of join.
What is the implied premium on a per share basis : A semiannual convertible bond is selling at par = 1,000. The bond has a quoted annual coupon of 12% and 15 year to maturity.

Reviews

Write a Review

Basic Computer Science Questions & Answers

  Contrast risk-threat and vulnerability

Explain the relationship between risk and loss. Describe risk management and assess its level of importance in information security.

  Building a gui interface for a simple calculator

This assignment involves building a GUI interface for a simple calculator using Java FX. The calculator shall be designed to allow the user

  Recommendation for either staying

Recently, your manager has heard about IPv6 and has asked you to present a recommendation for either staying with IPv4 or moving to IPv6. What would you recommend and why? Consider issues such as manageability, cost, and security.

  Construct a properly structured program

Construct a properly structured program that accepts the following input: student last name, student first name, academic major, and GPA.

  Rise in web security issues

Assume that you are the lead network security expert in your organization. Because of the recent rise in web security issues and the development of the global marketplace, your organization has decided to hire additional network security technicia..

  Design a double-sided board and use vendor catalogs

Be sure to include the following: a schematic drawing, a fabrication drawing, circuit side artwork, component side artwork, a silkscreen, and a final assembly drawing.

  How many rounds of questioning

If yes, in how many rounds of questioning? If not, why not? Analyze this scenario in detail.

  Examines the input register until it is nonzero

Write an assembly-language program that repeatedly examines the input register until it is nonzero and then moves its contents to the accumulator.

  Different solution for labor costs

Summarize the discussion you had with your collaborative team. Explain whether the firms your team discussed were wrong to pursue their outsourcing solution. Explain whether you would have chosen a different solution for labor costs and justify it.

  Create a name class of three string objects

Provide methods and operators for reading and writing Persons and for allowing the retrieval and changing of components of a Person (Name and Address)

  Estimate the constant factors for the runtime equations

Using empirical testing, try to estimate the constant factors for the runtime equations of the two algorithms. How big must n be before Strassen's algorithm becomes more efficient than the standard algorithm?

  Create the work breakdown structure

Create the work breakdown structure (WBS) as shown in the textbook listing the tasks that will need to be completed to meet the project's objectives.

Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd