Question

**DO IT AS PYTHON PLEASE**

The Trifid Cipher General Problem Description The Trifid cipher (not to be confused with the creatures from the classic scienExample Suppose that we want to use the Trifid cipher to encrypt the message Sherlock Holmes and Doctor Watson are investigaTo encrypt the message, we take each block (in this case, all three rows of a 5-character group) and concatenate the rows iPart I: Constructing the Lookup Table (15 points) (Place your answer to this problem in the codes.ру file) Complete the cod3. Create the Dictionary of Trigrams (a) Create a new, empty dictionary to store your letter-trigram mappings. (b) For each o

The Trifid Cipher General Problem Description The Trifid cipher (not to be confused with the creatures from the classic science-fiction film "The Day of the Triffids") is an algorithm that enciphers a plaintext message by encoding each letter as a three-digit number and then breaking up and rearranging the digits from each letter's encoded form. For this assignment, you will create a set of Python functions that can encode messages using this cipher (these functions are described in detail following the general explanation of how the Trifid cipher works; you can skip ahead to those function specifications if you want to, but they may make more sense if you read the general explanation first) The Trifid cipher works as follows 1. Use an encryption key to construct a lookup table that will translate each letter into a 3-digit number. The lookup table (technically, there are three separate lookup tables that work together) requires 27 characters in all; in addition to the 26 letters of the alphabet, we will use the '!' character as the 27th value 2. Process the plaintext message one letter at a time, obtaining its equivalent number from the lookup table and writing the digits of that number along each of three rows (one digit per line/row) 3. After the plaintext message has been converted to digits, break each row of digits into a series of 5-digit groups Recombine the groups into a single string of digits in the following order: the first groups of each row, followed by the second groups of each row, etc 4. Each group of three digits from this combined string is then translated into a new letter via the lookup table 5. Finally, we break up the ciphertext into 5-letter groups. If the final group has fewer than 5 letters, we add Xs as necessary to pad it to a length of 5 Example Suppose that we want to use the Trifid cipher to encrypt the message "Sherlock Holmes and Doctor Watson are investigating" using the secret key "deduction". After capitalizing every letter in the key, we write out its unique letters, in the order they appear, followed by the remainder of the alphabet (plus a placeholder character to get exactly 27 characters) DEUCTIONABFGHJKLMPQRSVWXYZ! These letters will be arranged into three 3x3 grids as follows
Example Suppose that we want to use the Trifid cipher to encrypt the message "Sherlock Holmes and Doctor Watson are investigating using the secret key "deduction". After capitalizing every letter in the key, we write out its unique letters, in the order they appear, followed by the remainder of the alphabet (plus a placeholder character to get exactly 27 characters) DEUCTIONABFGHJKLMPQRSVWXYZ! These letters will be arranged into three 3x3 grids as follows: Table 1 Table 2 Table 3 12 3 We can use these tables to obtain the 3-digit trigram for each letter in the plaintext message. For example, the letter "S translates to 313 (table 3, row 1, column 3). Each trigram is written vertically below the original letter (the message has beein broken into 5-letter groups) SHERL OCKHO LMESA NDDOC TORWA TSONA REINV ESTIG ATING 12113 32223 33113 31132 23123 21333 11232 11221 32231 31221 11311 12233 21111 21223 23123 22321 23233 32323
To encrypt the message, we take each "block" (in this case, all three rows of a 5-character group) and concatenate the rows into a single string of (15) digits. Every three-digit group in this string, reading left to right, is then translated back into a new letter using the same letter-trigram equivalences as before: 321321211331221 = 321 321 211 331 221 = VV B Y H 112213222311311 = 112 213 222 311 311 = E G J Q Q 221313311312233-221 313 311 312 233 -HSQR P 113312312321223 113 312 312 321 223 U RRV 131112133323123 = 131 112 133 323 123 = O E AX ! 311131123222321 311 131 123 222 321 -Q 0 1 J ν 131121122123233 = 131 121 122 123 233 = О С Т 1 P 111123223132323 = 111 123 223 132 323 = D I K N X This gives us a final enciphered message of VVBYH EGJQQ HSQRP DUUHD URRVK OEAXI QOIJV OCTIP DIKNX.
Part I: Constructing the Lookup Table (15 points) (Place your answer to this problem in the "codes.ру" file) Complete the codesO function, which takes a string argument (the encryption key) and returns a dictionary that maps (uppercase) letters to three-digit trigrams. Use the pseudocode algorithm below as a guide: 1. General Preparation Convert the key to uppercase and use the string method replace ) to remove any spaces. The replace () method takes two arguments: the character sequence to be replaced, and the replacement value. In this case, use "" (a single space) as the search value and "" (the empty string) as its replacement, e.g.,myKey.replace (" Construct a list of available (not yet used) letters of the alphabet, followed by the placeholder character"! Create another list to hold your three initial lookup tables. This list should contain four elements: an arbitrary integer (or some other value) to serve as a placeholder, followed by three empty lists (the placeholder value is there so that the indices of the three lookup table lists will begin with 1 rather than 0). . Create a variable to track the index of the current lookup table (this will initially be 1) 2. Create the Lookup Tables (a) For each letter in the encryption key, check to see if it is in the list of available/unused letters. If it is, use the remove ) method to remove it from that list and append it to the current lookup table list. If the length of the current lookup table list is now 9, increment the "current lookup table" variable to point to the next list. Note that if the encryption key contains multiple copies of a given letter, that letter will only be added to the lookup table(s) one time Once you have processed the entire encryption key, add the remaining values from the "unused letters" li the current lookup table, moving to the next lookup table each time the current table's list reaches a length of 9 elements.
3. Create the Dictionary of Trigrams (a) Create a new, empty dictionary to store your letter-trigram mappings. (b) For each of the three lookup tables/lists in order (indices 1, 2, and 3 in your list from Step 1), calculate the letter trigrams as follows » Your new dictionary key will be the letter at that index The trigram for that letter is calculated as follows o first Digit the index of the current table in the list of tables (e.g., 1, 2, or 3) the index of the current letter in the current table o letter Index o secondDigit = (1etter Index 113) + 1 thirdDigit-(let terindex % 3) plus 1 o trigram- firstDigit 100+ secondDigit *10+thirdDigit (c) Return your newly-filled dictionary Examples: Note: the examples below do not show the entire lookup table that will be generated from the encryption key. Instead, they show what the resulting lookup table will return for a given plaintext character Function Call Plaintext LetterCorresponding Trigram codes (" DRAGON") 112 codes (" DRAGON") 213 codes (" DRAGON") 332 codes ("NEPTUNE") 131 II RIn codes (" NEPTUNE") I TIT 321 codes ("NEPTUNE") codes ("CHALLENGER" ) 122 nFn codes ("CHALLENGER" ) 233 codes ("CHALLENGER") 312 ITI
0 0
Add a comment Improve this question Transcribed image text
Answer #1

Task : Constructing The Lookup Table (complete the codes() function ; )

Python CODE ::

codes. py 1 def codes (key) key key . upper(). replace( ,) # removing spaces Not used = list( ABCDEFGHlJKLMNOPQRSTUVWXYZ

Execution (OUTPUT)::..

aj@d1r3wolf:/tmp/Q File Edit View Search Terminal Help aj@d1r3wolf:/tmp/Qs py codes.py D 111, E 112, U: 113, C: 121, T

The key i have used is : "Deduction"

RAW PYTHON CODE ::

_____________________________ codes.py ____________________________________________________

def codes(key):
   key = key.upper().replace(" ",'') # removing spaces
   Not_used = list("ABCDEFGHIJKLMNOPQRSTUVWXYZ!")
   Tables = [0,[],[],[]] ; Ind = 1 # Creating empty tables
   for letter in key:   # Taking the letters from key
       if letter in Not_used:
           Tables[Ind].append(letter)
           Not_used.remove(letter)
           if len(Tables[Ind]) == 9 : Ind += 1 # If current list is filled;
   for letter in Not_used: # Then taking letters from remaining
       Tables[Ind].append(letter)
       if len(Tables[Ind]) == 9 : Ind += 1
   Trigram = {} # Empty Trigram Dictionary
   for i in range(3):
       first = i+1
       for letterInd in range(9):
           second = (letterInd // 3)+1
           third = (letterInd % 3)+1
           letter = Tables[first][letterInd]
           trigram = first*100 + second*10 + third
           Trigram[letter] = trigram # FIlling Trigrams
   return Trigram # Returning Filled Trigram Dictionary

print(codes("Deduction"))
################################################END#########################################

Add a comment
Know the answer?
Add Answer to:
**DO IT AS PYTHON PLEASE** The Trifid Cipher General Problem Description The Trifid cipher (not to be confused with the...
Your Answer:

Post as a guest

Your Name:

What's your source?

Earn Coins

Coins can be redeemed for fabulous gifts.

Not the answer you're looking for? Ask your own homework help question. Our experts will answer your question WITHIN MINUTES for Free.
Similar Homework Help Questions
  • Write the programming C please, not C++. The main function should be to find the offset...

    Write the programming C please, not C++. The main function should be to find the offset value of the ciper text "wPL2KLK9PWWZ7K3ST24KZYKfPMKJ4SKLYOKRP4KFKP842LK0ZTY43 " and decrypt it. In cryptography, a Caesar Cipher is one of the simplest and most widely known encryption techniques. It is a type of substitution cipher in which each letter in the plaintext is replaced by a letter some fixed number of positions down the alphabet. For example, with a left shift of 3, D would be...

  • Can i get Playfair Cipher for python 3 that encrypts a message and decrypts it, could...

    Can i get Playfair Cipher for python 3 that encrypts a message and decrypts it, could you possibly make it as simple as you can without losing functionality. please include comments, that would help me better understand Example of PlayFair Cipher: https://en.wikipedia.org/wiki/Playfair_cipher The Playfair cipher uses a 5 by 5 table containing a key word or phrase. Memorization of the keyword and 4 simple rules was all that was required to create the 5 by 5 table and use the...

  • Creating a Vigenère Cipher Encryption/Decryption in Assembly Language NASM/YASM With these instructions so far we created...

    Creating a Vigenère Cipher Encryption/Decryption in Assembly Language NASM/YASM With these instructions so far we created some variables for the data and the outputs for them but are very confused on how to integrate the cipher portion so help would be appreciated. As seen in the picture below we are supposed to use a Vigenere cipher which uses key and plaintext variables in nasm/yasm assembly. The key is extended to the size of the text and then for each letter...

  • Caesar Cipher v3 Decription Description A Caesar cipher is one of the first and most simple...

    Caesar Cipher v3 Decription Description A Caesar cipher is one of the first and most simple encryption methods. It works by shifting all letters in the original message (plaintext) by a certain fixed amount (the amounts represents the encryption key). The resulting encoded text is called ciphertext. Example Key (Shift): 3 Plaintext: Abc Ciphertext: Def Task Your goal is to implement a Caesar cipher program that receives the key and an encrypted paragraph (with uppercase and lowercase letters, punctuations, and...

  • do the following in python idle 3.5 or higher know nothing on this subject Eile Edit...

    do the following in python idle 3.5 or higher know nothing on this subject Eile Edit Yew Hbtory Bookmarks bols Help Microsoft Word-Situatio x S Female coaches: Why are. x a SakaieURI:csc 110 spri.. x O lab7-crypto-s17-labr-cry. x Writer The owing Code. x https sakai. 7-Cryptog rithms -10 28 /lab7-cryp 67k e a Search A Most visited e Getting started To decode an Affine cipher, we need to reverse the process. This is not a simple as reversing a Caesar...

  • WE ARE USING PYTHON TO COMPLETE THIS ASSIGNMENT :) THANK YOU! In this programming assignment, you...

    WE ARE USING PYTHON TO COMPLETE THIS ASSIGNMENT :) THANK YOU! In this programming assignment, you will write functions to encrypt and decrypt messages using simple substitution ciphers. Your solution MUST include: a function called encode that takes two parameters: key, a 26-character long string that identifies the ciphertext mapping for each letter of the alphabet, in order; plaintext, a string of unspecified length that represents the message to be encoded. encode will return a string representing the ciphertext. a...

  • JAVA PROJECT Part 1 - Normalize Text The first thing we will do is normalize the...

    JAVA PROJECT Part 1 - Normalize Text The first thing we will do is normalize the input message so that it’s easier to work with. Write a method called normalizeText which does the following: Removes all the spaces from your text Remove any punctuation (. , : ; ’ ” ! ? ( ) ) Turn all lower-case letters into upper-case letters Return the result. The call normalizeText(“This is some \“really\” great. (Text)!?”) should return “THISISSOMEREALLYGREATTEXT” Part 2 - Obfuscation...

  • Part 3: Transposition Ciphers #can't use ord or chr functions You must implement three transposition ciphers...

    Part 3: Transposition Ciphers #can't use ord or chr functions You must implement three transposition ciphers (the "backwards" cipher, the Rail Fence cipher, and the Column Transposition cipher) where the ciphertext is created via an altered presentation of the plaintext. The algorithm for each is detailed in the function descriptions in this section. (13 points) def backwards_cipher(plaintext, key): • Parameter(s): plaintext ----- a string; the message to be encrypted key ----- an integer; the number to control this cipher •...

  • Write a program that implements an elementary bit stream cipher. An elementary level bit stream cipher...

    Write a program that implements an elementary bit stream cipher. An elementary level bit stream cipher is an encryption algorithm that encrypts 1 byte of plain text at a time. This one uses a given 4-bit bit pattern as the key. The size of the encrypted message that we want to be able to send has a maximum length of 200 characters. You must: 1. prompt the user to input the clear text to be encrypted. You must use printf()...

  • Python program Use the provided shift function to create a caesar cipher program. Your program s...

    python program Use the provided shift function to create a caesar cipher program. Your program should have a menu to offer the following options: Read a file as current message Save current message Type in a new message Display current message "Encrypt" message Change the shift value For more details, see the comments in the provided code. NO GLOBAL VARIABLES! Complete the program found in assignment.py. You may not change any provided code. You may only complete the sections labeled:#YOUR...

ADVERTISEMENT
Free Homework Help App
Download From Google Play
Scan Your Homework
to Get Instant Free Answers
Need Online Homework Help?
Ask a Question
Get Answers For Free
Most questions answered within 3 hours.
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT