cm Exercises 1: Implement a SimpleCipher class that has at least: a data member called key a proper constructor a method called encrypt which take a message and returns the encrypted message according to the following algorithm: You have a variable that represents the character space (all characters from az, A-Z, 0-9 and space (in the order mentioned]) Each character in the user string is substituted by another fixed character, similar to the caesar cipher. Unlike the caesar cipher, the character would be shifted by a certain number of characters based on the fibonacci sequence. The user needs to provide a key in the form of a positive integer. The fibonacci sequence is a sequence of numbers where each number is the sum of the two numbers before it, and the first two elements of it are 0 and 1. Example: n10 n2 = 1 n3 = n1 + n2 = 1 n4 = n2+ n3 = 2 n5 = n3+4=3 n6 = n4+n5 = 5 nens+n6=8 n=n6n7 - 13 and so on You will need to generate a Fibonacci sequence based on the number of characters that the user input has plus key. Example, if the user string is 5 characters and the key is 3, then the length of the fibonacci sequence should be 8 The allowed characters for this cipher are the characters inside the character space variable To encode the user supplied string you would need to find the index of the plaintext character in the allowed character set, and add to it the number from the Fibonacci sequence that has the same index in the sequence as the plaintext character plus the key. Finally you would use this number as an index to retrieve the corresponding new ciphertext character from the allowed character set. If the number was greater than the length of the character set, you would loop around and continue Example: User input: Test Key: 3 Since the key is 3 we will start at nd from the Fibonacci sequence you can treat the key value as in the index value to start from, in the fibonaca sequence the element with the 3rd index is nd) T-2V e-> 5x E-B- Check table below) MINO APM Character Position in the corresponding element in Fibonacci plaintext Sequence.key(3) Output after shift T 0 2 v 1 3 ho 5 2 5 X 8 Implement a DoubleCipher class that is a specialization of the SimpleCipher with an additional data member called seed a proper constructor a method called double_encrypt which take a message and returns the encrypted message according to the following algorithm First encrypt the message using the encrypt method in the SimpleCipher class and store the value in a variable called enc then encrypt the enct string by substituting each character by another character based on a randomly generated list. This randomly generated list is created by shuffling list of allowed characters that contains lower case alphabet, upper case alphabet, and numbers. In that particular order). Make sure to keep another copy of the allowed characters list in order and unshuffled. The random function is provided with a seed that the user provides as a key for the dipher. Once the randomly shuttled list is created, the cipher works character by character from the entstring, where it needs to find that index of that character in the shuffled list, and will use that position to retrieve the opher character from the USHUFFLEDU OD NG 9 FM DOLL