CS 303 Algorithmic Number Theory and Cryptography Assignment 1 Due Tuesday April 21 @ Midnight Spring 2008-09 Jeremy Johnson Assignment 1 is a mixture of Maple coding and exploration and some more theoretical problems from the text. The assignment is given as a Maple worksheet and there are five questions, each worth 20 points, for a total of 100 points. The last two question contains problems from the text. Part of the goal of the assignment is to learn how to use Maple and to review how to do a proof (by induction and by contradiction). The first part of assignment 1 covers material on substitution cyphers. Question 1 asks students to use the index of coincidence to determine if a given cyphertext used a monoalphabetic or polyalphabetic cypher. Questions 2 and 3 deal with the polyalphabetic Vigenere cypher and use Maple to implement and break the cypher. The second part of the assignment uses Maple to review modular arithmetic, gcds and prime numbers, including some of the key Maple functions used for modular arithmetic and greatest common divisors (see the lecture introducing modular arithmetic and lab1 which is referenced from the class web page and is linked to in the first several lectures) and the prime number theorem. These questions contain some Maple calculations but also include problems from the text which ask for proofs. This assignment must be done individually, but if you are stuck on a problem, you should ask the instructor or TA (questions related to the assignment may be, in fact are encouraged, asked in class. Make sure to enter your name on your worksheet and submit it through Bb Vista. Name: ID:
<Text-field style="Heading 1" layout="Heading 1">Question 1 (20 points) [Index of Coincidence]</Text-field> In this question, you compute the index of coincidence of a string. Given a string LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYqLUkjbWlHRiQ2JVEiU0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNi1RIj1GJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUnbHNwYWNlR1EsMC4yNzc3Nzc4ZW1GJy8lJ3JzcGFjZUdGTC1JJW1zdWJHRiQ2JS1GLDYlUSJzRidGL0YyLUYjNiQtSSNtbkdGJDYkUSIxRidGOUY5LyUvc3Vic2NyaXB0c2hpZnRHUSIwRictRjY2LVEjLi5GJ0Y5RjtGPkZARkJGREZGRkgvRktRLDAuMjIyMjIyMmVtRicvRk5RJjAuMGVtRictRjY2LVEiLkYnRjlGO0Y+RkBGQkZERkZGSC9GS0Zeb0Zdby1GUDYlRlItRiM2JC1GLDYlUSJ0RidGL0YyRjlGZW4tRjY2LVEiLEYnRjlGOy9GP0YxRkBGQkZERkZGSEZiby9GTlEsMC4zMzMzMzMzZW1GJ0Y5 of length LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEidEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNi1RIn5GJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdGTEY5of symbols from an alphabet LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYqLUkjbWlHRiQ2JVEiQUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNi1RIj1GJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUnbHNwYWNlR1EsMC4yNzc3Nzc4ZW1GJy8lJ3JzcGFjZUdGTC1JJW1zdWJHRiQ2JS1GLDYlUSJhRidGL0YyLUYjNiQtSSNtbkdGJDYkUSIxRidGOUY5LyUvc3Vic2NyaXB0c2hpZnRHUSIwRictRjY2LVEjLi5GJ0Y5RjtGPkZARkJGREZGRkgvRktRLDAuMjIyMjIyMmVtRicvRk5RJjAuMGVtRictRjY2LVEiLkYnRjlGO0Y+RkBGQkZERkZGSC9GS0Zeb0Zdby1GUDYlRlItRiM2JC1GLDYlUSJuRidGL0YyRjlGZW4tRjY2LVEifkYnRjlGO0Y+RkBGQkZERkZGSEZib0Zdb0Y5comprised of LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUkjbWlHRiQ2JVEibkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy9GM1Enbm9ybWFsRic= symbols. Let LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUklbXN1YkdGJDYlLUkjbWlHRiQ2JVEiZkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1GIzYkLUYvNiVRImlGJ0YyRjUvRjZRJ25vcm1hbEYnLyUvc3Vic2NyaXB0c2hpZnRHUSIwRictSSNtb0dGJDYtUSJ+RidGPS8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGSC8lKXN0cmV0Y2h5R0ZILyUqc3ltbWV0cmljR0ZILyUobGFyZ2VvcEdGSC8lLm1vdmFibGVsaW1pdHNHRkgvJSdhY2NlbnRHRkgvJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR0ZXLUZDNi1RIj1GJ0Y9RkZGSUZLRk1GT0ZRRlMvRlZRLDAuMjc3Nzc3OGVtRicvRllGaG5GPQ== the number of occurrences of the LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUkjbWlHRiQ2JVEiaUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy9GM1Enbm9ybWFsRic=th symbol LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUklbXN1YkdGJDYlLUkjbWlHRiQ2JVEiYUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1GIzYkLUYvNiVRImlGJ0YyRjUvRjZRJ25vcm1hbEYnLyUvc3Vic2NyaXB0c2hpZnRHUSIwRidGPQ== in the string LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYoLUkjbWlHRiQ2JVEiU0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNi1RIi5GJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdGTC1GNjYtUSJ+RidGOUY7Rj5GQEZCRkRGRkZIRkpGTUZPRk9GOQ==The index of coincidence is equal to LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkrbXVuZGVyb3ZlckdGJDYnLUkjbW9HRiQ2LVEmJlN1bTtGJy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRicvJSZmZW5jZUdRJnVuc2V0RicvJSpzZXBhcmF0b3JHRjcvJSlzdHJldGNoeUdRJXRydWVGJy8lKnN5bW1ldHJpY0dGNy8lKGxhcmdlb3BHRjwvJS5tb3ZhYmxlbGltaXRzR0Y8LyUnYWNjZW50R0Y3LyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdRLDAuMTY2NjY2N2VtRictRiM2Ji1JI21pR0YkNiVRImlGJy8lJ2l0YWxpY0dGPC9GM1EnaXRhbGljRictRi82LVEiPUYnRjIvRjZRJmZhbHNlRicvRjlGWS9GO0ZZL0Y+RlkvRkBGWS9GQkZZL0ZERlkvRkZRLDAuMjc3Nzc3OGVtRicvRklGW28tSSNtbkdGJDYkUSIxRidGMkYyLUYjNiQtRk42JVEibkYnRlFGU0YyLyUnYWNjZW50R0ZZLyUsYWNjZW50dW5kZXJHRlktSShtc3Vic3VwR0YkNigtRk42JVEiZkYnRlFGUy1GIzYkRk1GMi1GIzYkLUZebzYkUSIyRidGMkYyLyUxc3VwZXJzY3JpcHRzaGlmdEdRIjBGJy8lL3N1YnNjcmlwdHNoaWZ0R0ZpcC9JK21zZW1hbnRpY3NHRiRRLFtub25lLG5vbmVdRictRi82LVEiLkYnRjJGWEZaRmVuRmZuRmduRmhuRmluRkUvRklGR0Yy The incidence of occurrence can be used to determine if a cypher is a monoalphabetic substitution cypher or a polyalphabetic substitution cypher. Assume that English is the language of the plaintext. In a monoalphabetic substitution cypher, the frequencies LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUklbXN1YkdGJDYlLUkjbWlHRiQ2JVEiZkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1GIzYkLUYvNiVRImlGJ0YyRjUvRjZRJ25vcm1hbEYnLyUvc3Vic2NyaXB0c2hpZnRHUSIwRidGPQ== should be approximately equal to the frequencies of LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUklbXN1YkdGJDYlLUkjbWlHRiQ2JVEiYUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1GIzYkLUYvNiVRImlGJ0YyRjUvRjZRJ25vcm1hbEYnLyUvc3Vic2NyaXB0c2hpZnRHUSIwRidGPQ== in English. In an ideal polyalphabetic substitution cypher, the frequencies LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUklbXN1YkdGJDYlLUkjbWlHRiQ2JVEiZkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1GIzYkLUYvNiVRImlGJ0YyRjUvRjZRJ25vcm1hbEYnLyUvc3Vic2NyaXB0c2hpZnRHUSIwRidGPQ== should be approximately equal to LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUkmbWZyYWNHRiQ2KC1JI21uR0YkNiRRIjFGJy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRictRiM2JC1JI21pR0YkNiVRIm5GJy8lJ2l0YWxpY0dRJXRydWVGJy9GM1EnaXRhbGljRidGMi8lLmxpbmV0aGlja25lc3NHUSIxRicvJStkZW5vbWFsaWduR1EnY2VudGVyRicvJSludW1hbGlnbkdGRS8lKWJldmVsbGVkR1EmZmFsc2VGJ0Yy, i.e. each letter occurs with equal probability. restart; with(StringTools): with(Statistics): In this question we assume that alphabet := Iota("a".."z"); UTthYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejYi The probabilities of the letters in the alphabet occurring in typical English text are given in the list FE. The LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUkjbWlHRiQ2JVEiaUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy9GM1Enbm9ybWFsRic=th element of FE is the probability for the LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUkjbWlHRiQ2JVEiaUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy9GM1Enbm9ybWFsRic=th letter in the alphabet. The probability distribution can be visualized with the bar graph produced by ColumnGraph. FE := [0.8167000000e-1, 0.1492000000e-1, 0.2782000000e-1, 0.4253000000e-1, .1270200000, 0.2228000000e-1, 0.2015000000e-1, 0.6094000000e-1, 0.6966000000e-1, 0.1530000000e-2, 0.7720000000e-2, 0.4025000000e-1, 0.2406000000e-1, 0.6749000000e-1, 0.7507000000e-1, 0.1929000000e-1, 0.9500000000e-3, 0.5987000000e-1, 0.6327000000e-1, 0.9056000000e-1, 0.2758000000e-1, 0.9780000000e-2, 0.2360000000e-1, 0.1500000000e-2, 0.1974000000e-1, 0.7400000000e-3]; NzwkIisrKytuIikhIzYkIisrKysjXCJGJSQiKysrKyN5I0YlJCIrKysrYFVGJSQiKysrP3E3ISM1JCIrKysrR0FGJSQiKysrKzo/RiUkIisrKyslNCdGJSQiKysrK21wRiUkIisrKytJOiEjNyQiKysrKz94RjkkIisrKytEU0YlJCIrKysrMUNGJSQiKysrK1xuRiUkIisrKysydkYlJCIrKysrSD5GJSQiKysrKysmKiEjOCQiKysrKygpZkYlJCIrKysrRmpGJSQiKysrK2MhKkYlJCIrKysrZUZGJSQiKysrKyF5KkY5JCIrKysrZ0JGJSQiKysrKys6RjkkIisrKyt1PkYlJCIrKysrK3VGSA== ColumnGraph(FE); NictJSlQT0xZR09OU0c2PTcmNyQkIiIhISIiJCIiISEiIjckJCIjdiEiIyQiIiEhIiI3JCQiI3YhIiMkIiVuIikhIiY3JCQiIiEhIiIkIiVuIikhIiY3JjckJCIjNSEiIiQiIiEhIiI3JCQiJHYiISIjJCIiISEiIjckJCIkdiIhIiMkIiUjXCIhIiY3JCQiIzUhIiIkIiUjXCIhIiY3JjckJCIjPyEiIiQiIiEhIiI3JCQiJHYjISIjJCIiISEiIjckJCIkdiMhIiMkIiUjeSMhIiY3JCQiIz8hIiIkIiUjeSMhIiY3JjckJCIjSSEiIiQiIiEhIiI3JCQiJHYkISIjJCIiISEiIjckJCIkdiQhIiMkIiVgVSEiJjckJCIjSSEiIiQiJWBVISImNyY3JCQiI1MhIiIkIiIhISIiNyQkIiR2JSEiIyQiIiEhIiI3JCQiJHYlISIjJCImLUYiISImNyQkIiNTISIiJCImLUYiISImNyY3JCQiI10hIiIkIiIhISIiNyQkIiR2JiEiIyQiIiEhIiI3JCQiJHYmISIjJCIlR0EhIiY3JCQiI10hIiIkIiVHQSEiJjcmNyQkIiNnISIiJCIiISEiIjckJCIkdichIiMkIiIhISIiNyQkIiR2JyEiIyQiJTo/ISImNyQkIiNnISIiJCIlOj8hIiY3JjckJCIjcSEiIiQiIiEhIiI3JCQiJHYoISIjJCIiISEiIjckJCIkdighIiMkIiUlNCchIiY3JCQiI3EhIiIkIiUlNCchIiY3JjckJCIjISkhIiIkIiIhISIiNyQkIiR2KSEiIyQiIiEhIiI3JCQiJHYpISIjJCIlbXAhIiY3JCQiIyEpISIiJCIlbXAhIiY3JjckJCIjISohIiIkIiIhISIiNyQkIiR2KiEiIyQiIiEhIiI3JCQiJHYqISIjJCIkYCIhIiY3JCQiIyEqISIiJCIkYCIhIiY3JjckJCIkKyIhIiIkIiIhISIiNyQkIiV2NSEiIyQiIiEhIiI3JCQiJXY1ISIjJCIkcyghIiY3JCQiJCsiISIiJCIkcyghIiY3JjckJCIkNSIhIiIkIiIhISIiNyQkIiV2NiEiIyQiIiEhIiI3JCQiJXY2ISIjJCIlRFMhIiY3JCQiJDUiISIiJCIlRFMhIiY3JjckJCIkPyIhIiIkIiIhISIiNyQkIiV2NyEiIyQiIiEhIiI3JCQiJXY3ISIjJCIlMUMhIiY3JCQiJD8iISIiJCIlMUMhIiY3JjckJCIkSSIhIiIkIiIhISIiNyQkIiV2OCEiIyQiIiEhIiI3JCQiJXY4ISIjJCIlXG4hIiY3JCQiJEkiISIiJCIlXG4hIiY3JjckJCIkUyIhIiIkIiIhISIiNyQkIiV2OSEiIyQiIiEhIiI3JCQiJXY5ISIjJCIlMnYhIiY3JCQiJFMiISIiJCIlMnYhIiY3JjckJCIkXSIhIiIkIiIhISIiNyQkIiV2OiEiIyQiIiEhIiI3JCQiJXY6ISIjJCIlSD4hIiY3JCQiJF0iISIiJCIlSD4hIiY3JjckJCIkZyIhIiIkIiIhISIiNyQkIiV2OyEiIyQiIiEhIiI3JCQiJXY7ISIjJCIjJiohIiY3JCQiJGciISIiJCIjJiohIiY3JjckJCIkcSIhIiIkIiIhISIiNyQkIiV2PCEiIyQiIiEhIiI3JCQiJXY8ISIjJCIlKClmISImNyQkIiRxIiEiIiQiJSgpZiEiJjcmNyQkIiQhPSEiIiQiIiEhIiI3JCQiJXY9ISIjJCIiISEiIjckJCIldj0hIiMkIiVGaiEiJjckJCIkIT0hIiIkIiVGaiEiJjcmNyQkIiQhPiEiIiQiIiEhIiI3JCQiJXY+ISIjJCIiISEiIjckJCIldj4hIiMkIiVjISohIiY3JCQiJCE+ISIiJCIlYyEqISImNyY3JCQiJCsjISIiJCIiISEiIjckJCIldj8hIiMkIiIhISIiNyQkIiV2PyEiIyQiJWVGISImNyQkIiQrIyEiIiQiJWVGISImNyY3JCQiJDUjISIiJCIiISEiIjckJCIldkAhIiMkIiIhISIiNyQkIiV2QCEiIyQiJHkqISImNyQkIiQ1IyEiIiQiJHkqISImNyY3JCQiJD8jISIiJCIiISEiIjckJCIldkEhIiMkIiIhISIiNyQkIiV2QSEiIyQiJE8jISIlNyQkIiQ/IyEiIiQiJE8jISIlNyY3JCQiJEkjISIiJCIiISEiIjckJCIldkIhIiMkIiIhISIiNyQkIiV2QiEiIyQiIzohIiU3JCQiJEkjISIiJCIjOiEiJTcmNyQkIiRTIyEiIiQiIiEhIiI3JCQiJXZDISIjJCIiISEiIjckJCIldkMhIiMkIiV1PiEiJjckJCIkUyMhIiIkIiV1PiEiJjcmNyQkIiRdIyEiIiQiIiEhIiI3JCQiJXZEISIjJCIiISEiIjckJCIldkQhIiMkIiN1ISImNyQkIiRdIyEiIiQiI3UhIiYtJSZDT0xPUkc2JiUkSFNWRyQiMXRCPW8xJ1taJiEjOyQiIzUhIiIkIjFyQ3k/ITMnPnEhIzstJSdDVVJWRVNHNiY3IzckJCIiISEiIiQiIiEhIiItJSdMRUdFTkRHNiMtJSlfVFlQRVNFVEc2I1FCX19uZXZlcl9kaXNwbGF5X3RoaXNfbGVnZW5kX2VudHJ5NiItJSZDT0xPUkc2JiUkSFNWRyQiMXRCPW8xJ1taJiEjOyQiIzUhIiIkIjFyQ3k/ITMnPnEhIzstJSpUSElDS05FU1NHNiMiIiQtJSpBWEVTU1RZTEVHNiMlJ05PUk1BTEctJShTQ0FMSU5HRzYjJS5VTkNPTlNUUkFJTkVERy0lJVJPT1RHNictJSlCT1VORFNfWEc2IyQiJHEkISIiLSUpQk9VTkRTX1lHNiMkIiMhKiEiIi0lLUJPVU5EU19XSURUSEc2IyQiJVNOISIiLSUuQk9VTkRTX0hFSUdIVEc2IyQiJVNPISIiLSUpQ0hJTERSRU5HNiI= a) Calculate the Index of Coincidence for English letters using the standard probabilities. Also calculate the Index of Coincidence assuming each letter in the alphabet occurs equally often. b) Calculate the Index of Coincidence for the following two cyphers. First you should compute a list of fequencies of the letters in the two cyphers, and then you should calculate the Index of Coincidence. Which one is more likely to be a monoalphabetic substitution cypher? You may use the command CountCharacterOccurrences from the StringTools package to count character frequencies. You may want to use the command add to calculate the Index of Coincidence. cstr1 := "dqgbhwvdlgohjudqgwkhvroxwlrqlvebqrphdqvvrgliilfxowdvbrxpljkwehohdgwrlpdjlqhiurpwkhiluvwkdvwblqvshfwlrqriwkhfkdudfwhuvwkhvhfkdudfwhuvdvdqbrqhpljkwuhdglobjxhvvirupdflskhuwkdwlvwrvdbwkhbfrqyhbdphdqlqjexwwkhqiurpzkdwlvnqrzqrinlgglfrxogqrwvxssrvhklpfdsdeohrifrqvwuxfwlqjdqbriwkhpruhdevwuxvhfubswrjudskvlpdghxspbplqgdwrqfhwkdwwklvzdvridvlpsohvshflhvvxfkkrzhyhudvzrxogdsshduwrwkhfuxghlqwhoohfwriwkhvdlorudevroxwhoblqvroxeohzlwkrxwwkhnhb"; UWhlbGRxZ2Jod3ZkbGdvaGp1ZHFnd2todnJveHdscnFsdmVicXJwaGRxdnZyZ2xpaWxmeG93ZHZicnhwbGprd2Vob2hkZ3dybHBkamxxaGl1cnB3a2hpbHV2d2tkdndibHF2c2hmd2xycXJpd2toZmtkdWRmd2h1dndraHZoZmtkdWRmd2h1dmR2ZHFicnFocGxqa3d1aGRnbG9ianhodnZpcnVwZGZsc2todXdrZHdsdndydmRid2toYmZycXloYmRwaGRxbHFqZXh3d2tocWl1cnB6a2R3bHZucXJ6cXJpbmxnZ2xmcnhvZ3Fyd3Z4c3NydmhrbHBmZHNkZW9ocmlmcnF2d3V4ZndscWpkcWJyaXdraHBydWhkZXZ3dXh2aGZ1YnN3cmp1ZHNrdmxwZGdoeHNwYnBscWdkd3JxZmh3a2R3d2tsdnpkdnJpZHZscHNvaHZzaGZsaHZ2eGZra3J6aHlodWR2enJ4b2dkc3NoZHV3cndraGZ1eGdobHF3aG9vaGZ3cml3a2h2ZGxvcnVkZXZyb3h3aG9ibHF2cm94ZW9oemx3a3J4d3draG5oYjYi Length(cstr1); IiRIJQ== cstr2 := "eqjyvxvgiuphmrrrgzhvwrrukmrtijfbtodidtsjsgofwmfalkeveolqlmhkfhrerhwuidejonvjuumklhliiwwnajxbonjthitzsqufklhihrvditvvvzhvwhihrvditvvvgsrrbunvqlmhkvhgdzpbmuvwvloiqdiiglhxtyewosksvgyklhecfrykyrqhgnzrjhukxkknwvrswyewosbrrcnfjnodumfuuchqutjysvojikomtesgbcirlcfrvzrlgwonxeqeowxkkmfvhgbjxuasvguepksjxaglvomrhhapdcponuewuntiwnakxkosnevufrwlspcivvetmhyslgknoniykrrwzuuchdvpveuzoklhirlhhonkioretxrltyivgicsugbjsoatvpbonjsoabcizotysxztyinky"; UWhlbGVxanl2eHZnaXVwaG1ycnJnemh2d3JydWttcnRpamZidG9kaWR0c2pzZ29md21mYWxrZXZlb2xxbG1oa2ZocmVyaHd1aWRlam9udmp1dW1rbGhsaWl3d25hanhib25qdGhpdHpzcXVma2xoaWhydmRpdHZ2dnpodndoaWhydmRpdHZ2dmdzcnJidW52cWxtaGt2aGdkenBibXV2d3Zsb2lxZGlpZ2xoeHR5ZXdvc2tzdmd5a2xoZWNmcnlreXJxaGduenJqaHVreGtrbnd2cnN3eWV3b3NicnJjbmZqbm9kdW1mdXVjaHF1dGp5c3Zvamlrb210ZXNnYmNpcmxjZnJ2enJsZ3dvbnhlcWVvd3hra21mdmhnYmp4dWFzdmd1ZXBrc2p4YWdsdm9tcmhoYXBkY3BvbnVld3VudGl3bmFreGtvc25ldnVmcndsc3BjaXZ2ZXRtaHlzbGdrbm9uaXlrcnJ3enV1Y2hkdnB2ZXV6b2tsaGlybGhob25raW9yZXR4cmx0eWl2Z2ljc3VnYmpzb2F0dnBib25qc29hYmNpem90eXN4enR5aW5reTYi Length(cstr2); IiRIJQ==
<Text-field style="Heading 1" layout="Heading 1">Question 2 (20 points) [Vigenere Cypher]</Text-field> Recall that the Vigenere cypher is a polyalphabetic substitution cypher, which applies the Caesar shift, with different shifts, to the letters in the plaintext. Which shift is used, is determined by a key. Let LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYpLUkjbWlHRiQ2JVEia0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNi1RIj1GJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUnbHNwYWNlR1EsMC4yNzc3Nzc4ZW1GJy8lJ3JzcGFjZUdGTC1JJW1zdWJHRiQ2JUYrLUYjNiQtSSNtbkdGJDYkUSIxRidGOUY5LyUvc3Vic2NyaXB0c2hpZnRHUSIwRictRjY2LVEjLi5GJ0Y5RjtGPkZARkJGREZGRkgvRktRLDAuMjIyMjIyMmVtRicvRk5RJjAuMGVtRictRjY2LVEiLkYnRjlGO0Y+RkBGQkZERkZGSC9GS0Zbb0Zqbi1GUDYlRistRiM2JC1GLDYlUSJ0RidGL0YyRjlGWEY5 be the key, and let LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUklbXN1YkdGJDYlLUkjbWlHRiQ2JVEibkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1GIzYkLUYvNiVRImlGJ0YyRjUvRjZRJ25vcm1hbEYnLyUvc3Vic2NyaXB0c2hpZnRHUSIwRictSSNtb0dGJDYtUSJ+RidGPS8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGSC8lKXN0cmV0Y2h5R0ZILyUqc3ltbWV0cmljR0ZILyUobGFyZ2VvcEdGSC8lLm1vdmFibGVsaW1pdHNHRkgvJSdhY2NlbnRHRkgvJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR0ZXRj0=be the numeric value of the letter LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUklbXN1YkdGJDYlLUkjbWlHRiQ2JVEia0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1GIzYkLUYvNiVRImlGJ0YyRjUvRjZRJ25vcm1hbEYnLyUvc3Vic2NyaXB0c2hpZnRHUSIwRidGPQ== in the key, then the first letter in the plaintext is shifted by LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUklbXN1YkdGJDYlLUkjbWlHRiQ2JVEibkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1GIzYkLUkjbW5HRiQ2JFEiMUYnL0Y2USdub3JtYWxGJ0Y+LyUvc3Vic2NyaXB0c2hpZnRHUSIwRictSSNtb0dGJDYtUSIsRidGPi8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGNC8lKXN0cmV0Y2h5R0ZJLyUqc3ltbWV0cmljR0ZJLyUobGFyZ2VvcEdGSS8lLm1vdmFibGVsaW1pdHNHRkkvJSdhY2NlbnRHRkkvJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR1EsMC4zMzMzMzMzZW1GJ0Y+ the second letter by LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUklbXN1YkdGJDYlLUkjbWlHRiQ2JVEibkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1GIzYkLUkjbW5HRiQ2JFEiMkYnL0Y2USdub3JtYWxGJ0Y+LyUvc3Vic2NyaXB0c2hpZnRHUSIwRictSSNtb0dGJDYtUSIsRidGPi8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGNC8lKXN0cmV0Y2h5R0ZJLyUqc3ltbWV0cmljR0ZJLyUobGFyZ2VvcEdGSS8lLm1vdmFibGVsaW1pdHNHRkkvJSdhY2NlbnRHRkkvJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR1EsMC4zMzMzMzMzZW1GJ0Y+ ..., the LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUkjbWlHRiQ2JVEidEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy9GM1Enbm9ybWFsRic=-th letter by LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUklbXN1YkdGJDYlLUkjbWlHRiQ2JVEibkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1GIzYkLUYvNiVRInRGJ0YyRjUvRjZRJ25vcm1hbEYnLyUvc3Vic2NyaXB0c2hpZnRHUSIwRictSSNtb0dGJDYtUSIuRidGPS8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGSC8lKXN0cmV0Y2h5R0ZILyUqc3ltbWV0cmljR0ZILyUobGFyZ2VvcEdGSC8lLm1vdmFibGVsaW1pdHNHRkgvJSdhY2NlbnRHRkgvJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR0ZXRj0= After the first LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUkjbWlHRiQ2JVEidEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy9GM1Enbm9ybWFsRic= letters the shifts start over with LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUklbXN1YkdGJDYlLUkjbWlHRiQ2JVEibkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1GIzYkLUkjbW5HRiQ2JFEiMUYnL0Y2USdub3JtYWxGJ0Y+LyUvc3Vic2NyaXB0c2hpZnRHUSIwRictSSNtb0dGJDYtUSIuRidGPi8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGSS8lKXN0cmV0Y2h5R0ZJLyUqc3ltbWV0cmljR0ZJLyUobGFyZ2VvcEdGSS8lLm1vdmFibGVsaW1pdHNHRkkvJSdhY2NlbnRHRkkvJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR0ZYRj4= Implement Maple functions EncryptVigenere and DecryptVigenere to encrypt and decrypt strings using the Vigenere cypher. These functions should be passed a string which is the key and the alphabet. We will use the standard English alphabet and input strings will have punctuation and spaces removed and upper case letters replaced by the corresponding lower case letters. You may want to implement your functions by modifying the function Caesar. Try out your functions on the string lstr below. restart; with(StringTools): Letter2Number := proc(str,Convert) local i, L; L := []; for i from StringTools:-Length(str) by -1 to 1 do L := [Convert[str[i]],op(L)]; end do; return L; end; Zio2JEkkc3RyRzYiSShDb252ZXJ0R0YlNiRJImlHRiVJIkxHRiVGJUYlQyU+Rik3Ij8oRigtX0ksU3RyaW5nVG9vbHNHNiQlKnByb3RlY3RlZEdJKF9zeXNsaWJHRiVJJ0xlbmd0aEdGJTYjRiQhIiIiIiJJJXRydWVHRjI+Rik3JCZGJjYjJkYkNiNGKC1JI29wR0YyNiNGKU9GKUYlRiVGJQ== Number2Letter := proc(L,alphabet) local i, str; str := ""; for i from 1 to nops(L) do str := cat(alphabet[L[i]+1],str); end do; return StringTools:-Reverse(str); end; Zio2JEkiTEc2IkkpYWxwaGFiZXRHRiU2JEkiaUdGJUkkc3RyR0YlRiVGJUMlPkYpUSFGJT8oRigiIiJGLi1JJW5vcHNHJSpwcm90ZWN0ZWRHNiNGJEkldHJ1ZUdGMT5GKS1JJGNhdEdGMTYkJkYmNiMsJiZGJDYjRihGLkYuRi5GKU8tX0ksU3RyaW5nVG9vbHNHNiRGMUkoX3N5c2xpYkdGJUkoUmV2ZXJzZUdGJTYjRilGJUYlRiU= alphabet := Iota("a".."z"); UTthYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejYi Convert := table(); PTYiSSZmYWxzZUclKnByb3RlY3RlZEdFXFtsIQ== for i from 1 to Length(alphabet) do Convert[alphabet[i]] := i-1; end do: Ceasar := proc(str,key,alphabet) local i, n, L, C, Convert, cypher; Convert := table(); n := StringTools:-Length(alphabet); for i from 1 to n do Convert[alphabet[i]] := i-1; end do; L := Letter2Number(str,Convert); C := []; for i from 1 to nops(L) do C := [op(C),L[i]+key mod n]; end do; cypher := Number2Letter(C,alphabet); return cypher; end; Zio2JUkkc3RyRzYiSSRrZXlHRiVJKWFscGhhYmV0R0YlNihJImlHRiVJIm5HRiVJIkxHRiVJIkNHRiVJKENvbnZlcnRHRiVJJ2N5cGhlckdGJUYlRiVDKj5GLS1JJnRhYmxlRyUqcHJvdGVjdGVkR0YlPkYqLV9JLFN0cmluZ1Rvb2xzRzYkRjNJKF9zeXNsaWJHRiVJJ0xlbmd0aEdGJTYjRic/KEYpIiIiRj1GKkkldHJ1ZUdGMz4mRi02IyZGJzYjRiksJkYpRj1GPSEiIj5GKy1JLkxldHRlcjJOdW1iZXJHRiU2JEYkRi0+Riw3Ij8oRilGPUY9LUklbm9wc0dGMzYjRitGPj5GLDckLUkjb3BHRjM2I0YsLUkkbW9kR0YlNiQsJiZGK0ZDRj1GJkY9Rio+Ri4tSS5OdW1iZXIyTGV0dGVyR0YlNiRGLEYnT0YuRiVGJUYl EncryptVigenere := proc(str,key,alphabet) end; Zio2JUkkc3RyRzYiSSRrZXlHRiVJKWFscGhhYmV0R0YlRiVGJUYlRiVGJUYlRiU= DecryptVigenere := proc(str,key,alphabet) end; Zio2JUkkc3RyRzYiSSRrZXlHRiVJKWFscGhhYmV0R0YlRiVGJUYlRiVGJUYlRiU= lstr := "once upon a time you dressed so fine you through the bums a dime in your prime didnt you"; UWRwb25jZX51cG9ufmF+dGltZX55b3V+ZHJlc3NlZH5zb35maW5lfn55b3V+dGhyb3VnaH50aGV+YnVtc35hfmRpbWV+aW5+eW91cn5wcmltZX5kaWRudH55b3U2Ig== lstr := StringTools:-Remove(IsSpace,lstr); UWFvb25jZXVwb25hdGltZXlvdWRyZXNzZWRzb2ZpbmV5b3V0aHJvdWdodGhlYnVtc2FkaW1laW55b3VycHJpbWVkaWRudHlvdTYi
<Text-field style="Heading 1" layout="Heading 1">Question 3 (20 points) [Cryptanalysis of Vigenere Cypher]</Text-field> In this question, you are given a cypher that was obtained using a Vigenere cypher, care of question 2, and are asked to decypher it. The basic approach is outlined in the handout from "The Code" by Simon Singh: 1) Determine the key length by looking for repeated subsequences, 2) use frequency analysis on the subsequences obtained by selecting symbols from the cypher at multiples of the key length. The details of these steps will be outlined below. You will be asked to write several maple procedures that assist in this process. restart; with(StringTools): cstr := "eqjyvxvgiuphmrrrgzhvwrrukmrtijfbtodidtsjsgofwmfalkeveolqlmhkfhrerhwuidejonvjuumklhliiwwnajxbonjthitzsqufklhihrvditvvvzhvwhihrvditvvvgsrrbunvqlmhkvhgdzpbmuvwvloiqdiiglhxtyewosksvgyklhecfrykyrqhgnzrjhukxkknwvrswyewosbrrcnfjnodumfuuchqutjysvojikomtesgbcirlcfrvzrlgwonxeqeowxkkmfvhgbjxuasvguepksjxaglvomrhhapdcponuewuntiwnakxkosnevufrwlspcivvetmhyslgknoniykrrwzuuchdvpveuzoklhirlhhonkioretxrltyivgicsugbjsoatvpbonjsoabcizotysxztyinky"; UWhlbGVxanl2eHZnaXVwaG1ycnJnemh2d3JydWttcnRpamZidG9kaWR0c2pzZ29md21mYWxrZXZlb2xxbG1oa2ZocmVyaHd1aWRlam9udmp1dW1rbGhsaWl3d25hanhib25qdGhpdHpzcXVma2xoaWhydmRpdHZ2dnpodndoaWhydmRpdHZ2dmdzcnJidW52cWxtaGt2aGdkenBibXV2d3Zsb2lxZGlpZ2xoeHR5ZXdvc2tzdmd5a2xoZWNmcnlreXJxaGduenJqaHVreGtrbnd2cnN3eWV3b3NicnJjbmZqbm9kdW1mdXVjaHF1dGp5c3Zvamlrb210ZXNnYmNpcmxjZnJ2enJsZ3dvbnhlcWVvd3hra21mdmhnYmp4dWFzdmd1ZXBrc2p4YWdsdm9tcmhoYXBkY3BvbnVld3VudGl3bmFreGtvc25ldnVmcndsc3BjaXZ2ZXRtaHlzbGdrbm9uaXlrcnJ3enV1Y2hkdnB2ZXV6b2tsaGlybGhob25raW9yZXR4cmx0eWl2Z2ljc3VnYmpzb2F0dnBib25qc29hYmNpem90eXN4enR5aW5reTYi n := Length(cstr); IiRIJQ== a) Determine the key length. Search for repeated substrings of length 4, 5, 6. Do this be scanning the cypher, selecting each possible substring of length l=4,5,6, and the search to see if the selected substring occurs later in the cypher. You may use SearchText from the StringTools package to search for the substring in the remainder of the cypher. If you find a repeated substring, print the substring, and the gap between occurrences of the substring. Find the greatest common divisor of the gaps. Don't forget that you may access substrings using range notation. E.G. cstr[1..4]; cstr[200..210]; cstr[400..n]; USVlcWp5NiI= USxreGtrbnd2cnN3eTYi UT9qc29hdHZwYm9uanNvYWJjaXpvdHlzeHp0eWlua3k2Ig== b) Construct subsequences of the cypher by selecting characters at multiples of the key length. I.E. If k is the key length, then construct subsequences: c1 = cstr[1],cstr[1+k],...,cstr[1+n/k],...,ck = cstr[k],cstr[2*k],...,cstr[floor(n/k)*k]. Maple hint: use seq and cat to form these strings. c) Calculate the character frequencies in the substrings formed from (b). You should construct a list F=[f1/n,...,ft/n], where fi is the number of occurences of symbol i in the string and n is the number of symbols in the string, and t is the number of symbols in the alphabet. Don't forget that you can use evalf() to get a floating point approximation to the fractions fi/n, and you can use CountCharacterOccurrences() from the StringTools package to obtain the number of occurrences of the ith symbol. For the alphabet use a,...,z. See question 1. alphabet := Iota("a".."z"); UTthYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejYi d) Determine the Ceasar shifts for the 5 subsequences from (c) and hence determine the key. This is done by comparing the frequencies computed in (c) with the standard English letter probabilities given in the list FE. You are to write a function FindShift(F1,F2) which takes as input F1 = the standard frequencies and F2 = the shifted frequencies. The function FindShift(F1,F2) find the shift LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUkjbWlHRiQ2JVEic0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy9GM1Enbm9ybWFsRic= which minimizes the error between the two lists of frequencies. I.E. For each possible shift LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzY0LUkjbWlHRiQ2JVEic0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNi1RIj1GJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUnbHNwYWNlR1EsMC4yNzc3Nzc4ZW1GJy8lJ3JzcGFjZUdGTC1JI21uR0YkNiRRIjBGJ0Y5LUY2Ni1RIixGJ0Y5RjsvRj9GMUZARkJGREZGRkgvRktRJjAuMGVtRicvRk5RLDAuMzMzMzMzM2VtRictRlA2JFEiMUYnRjlGUy1GNjYtUSMuLkYnRjlGO0Y+RkBGQkZERkZGSC9GS1EsMC4yMjIyMjIyZW1GJy9GTkZYLUY2Ni1RIi5GJ0Y5RjtGPkZARkJGREZGRkhGV0Zdb0ZTLUZQNiRRIzI1RidGOS1GNjYtUSJ+RidGOUY7Rj5GQEZCRkRGRkZIRldGXW9GNUZkby1GLDYlUSVub3BzRidGL0YyLUkobWZlbmNlZEdGJDYkLUYjNiQtRiw2JVEjRjFGJ0YvRjJGOUY5RlNGZG9GOQ==compute the sum of the squares of the difference F1[i]-F2[i+s mod 26]. Find the value of LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUkjbWlHRiQ2JVEic0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy9GM1Enbm9ybWFsRic= that minimizes this sum. This will be the most likely shift. Note that in the above sum, you will need to correct the indexing due to the fact that Maple indexes lists and arrays starting at 1 rather than 0. Use the function FindShift to find the key used to create the cyper cstr. FE := [0.8167000000e-1, 0.1492000000e-1, 0.2782000000e-1, 0.4253000000e-1, .1270200000, 0.2228000000e-1, 0.2015000000e-1, 0.6094000000e-1, 0.6966000000e-1, 0.1530000000e-2, 0.7720000000e-2, 0.4025000000e-1, 0.2406000000e-1, 0.6749000000e-1, 0.7507000000e-1, 0.1929000000e-1, 0.9500000000e-3, 0.5987000000e-1, 0.6327000000e-1, 0.9056000000e-1, 0.2758000000e-1, 0.9780000000e-2, 0.2360000000e-1, 0.1500000000e-2, 0.1974000000e-1, 0.7400000000e-3]; NzwkIisrKytuIikhIzYkIisrKysjXCJGJSQiKysrKyN5I0YlJCIrKysrYFVGJSQiKysrP3E3ISM1JCIrKysrR0FGJSQiKysrKzo/RiUkIisrKyslNCdGJSQiKysrK21wRiUkIisrKytJOiEjNyQiKysrKz94RjkkIisrKytEU0YlJCIrKysrMUNGJSQiKysrK1xuRiUkIisrKysydkYlJCIrKysrSD5GJSQiKysrKysmKiEjOCQiKysrKygpZkYlJCIrKysrRmpGJSQiKysrK2MhKkYlJCIrKysrZUZGJSQiKysrKyF5KkY5JCIrKysrZ0JGJSQiKysrKys6RjkkIisrKyt1PkYlJCIrKysrK3VGSA== FindShift := proc(F1,F2) end; Zio2JEkjRjFHNiJJI0YyR0YlRiVGJUYlRiVGJUYlRiU= e) Decypher cstr using the key found in (d) and your DecryptVigenere routine from question 2. Note that the encrypted text will have blanks removed.
<Text-field style="Heading 1" layout="Heading 1">Question 4 (20 points) [Modular Arithmeticand GCDs]</Text-field> restart; a) Use the Extended Euclidean algorithm (the maple command igcdex) to find the inverse of 5 in LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUklbXN1YkdGJDYlLUkjbWlHRiQ2JVEoJiM4NDg0O0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1GIzYkLUkjbW5HRiQ2JFEjMjdGJy9GNlEnbm9ybWFsRidGPi8lL3N1YnNjcmlwdHNoaWZ0R1EiMEYnLUkjbW9HRiQ2LVEiLkYnRj4vJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRkkvJSlzdHJldGNoeUdGSS8lKnN5bW1ldHJpY0dGSS8lKGxhcmdlb3BHRkkvJS5tb3ZhYmxlbGltaXRzR0ZJLyUnYWNjZW50R0ZJLyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdGWEY+ Verify your result. b) Use Euler's identity to compute the inverse of 5 in LUklbXN1Ykc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVErJmludGVnZXJzO0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JJW1yb3dHRiQ2JC1JI21uR0YkNiRRIzI3RicvRjNRJ25vcm1hbEYnRjwvJS9zdWJzY3JpcHRzaGlmdEdRIjBGJw== c) Find all elements that have inverses in LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUklbXN1YkdGJDYlLUkjbWlHRiQ2JVEoJiM4NDg0O0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1GIzYkLUkjbW5HRiQ2JFEjMjdGJy9GNlEnbm9ybWFsRidGPi8lL3N1YnNjcmlwdHNoaWZ0R1EiMEYnLUkjbW9HRiQ2LVEiLkYnRj4vJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRkkvJSlzdHJldGNoeUdGSS8lKnN5bW1ldHJpY0dGSS8lKGxhcmdlb3BHRkkvJS5tb3ZhYmxlbGltaXRzR0ZJLyUnYWNjZW50R0ZJLyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdGWEY+ and show their inverse. How many are there? d) Exercise 3.19 from the text. Hint - compare the steps in the Euclidean algorithm for computing gcd(LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2JVEiYUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNi1RIixGJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRjEvJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdRLDAuMzMzMzMzM2VtRictRiw2JVEiYkYnRi9GMkY5) with the steps when computing LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2JVEkZ2NkRicvJSdpdGFsaWNHUSZmYWxzZUYnLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGJy1JKG1mZW5jZWRHRiQ2JC1GIzYqLUklbXN1cEdGJDYlLUYsNiVRInhGJy9GMFEldHJ1ZUYnL0YzUSdpdGFsaWNGJy1GIzYlLUYsNiVRImFGJ0ZARkJGQEZCLyUxc3VwZXJzY3JpcHRzaGlmdEdRIjBGJy1JI21vR0YkNi1RKCZtaW51cztGJ0YyLyUmZmVuY2VHRjEvJSpzZXBhcmF0b3JHRjEvJSlzdHJldGNoeUdGMS8lKnN5bW1ldHJpY0dGMS8lKGxhcmdlb3BHRjEvJS5tb3ZhYmxlbGltaXRzR0YxLyUnYWNjZW50R0YxLyUnbHNwYWNlR1EsMC4yMjIyMjIyZW1GJy8lJ3JzcGFjZUdGam4tSSNtbkdGJDYkUSIxRidGMi1GTTYtUSIsRidGMkZQL0ZTRkFGVEZWRlhGWkZmbi9GaW5RJjAuMGVtRicvRlxvUSwwLjMzMzMzMzNlbUYnLUY7NiVGPS1GIzYlLUYsNiVRImJGJ0ZARkJGQEZCRklGTEZdb0YyRjJGYW9GMg== and use induction.
<Text-field style="Heading 1" layout="Heading 1">Question 5 (20 points) [Prime Numbers and their Distribution]</Text-field> restart; a) Question 2.1 from the text. Prove that there are infinitely many primes which are one less than a multiple of four (i.e. of the form LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2JVEhRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUYjNiZGKy1GIzYnRistRiM2Ji1JI21uR0YkNiRRIjRGJy9GM1Enbm9ybWFsRictSSNtb0dGJDYtUTEmSW52aXNpYmxlVGltZXM7RidGPy8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGRy8lKXN0cmV0Y2h5R0ZHLyUqc3ltbWV0cmljR0ZHLyUobGFyZ2VvcEdGRy8lLm1vdmFibGVsaW1pdHNHRkcvJSdhY2NlbnRHRkcvJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR0ZWLUYsNiVRIm5GJ0YvRjJGPy1GQjYtUSgmbWludXM7RidGP0ZFRkhGSkZMRk5GUEZSL0ZVUSwwLjIyMjIyMjJlbUYnL0ZYRmpuLUY8NiRRIjFGJ0Y/Rj9GK0Y/RitGPw==. Hint: Follow Euclid's proof that there are infinitely many primes and show that any integer of the form LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2JVEhRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUYjNiZGKy1GIzYnRistRiM2Ji1JI21uR0YkNiRRIjRGJy9GM1Enbm9ybWFsRictSSNtb0dGJDYtUTEmSW52aXNpYmxlVGltZXM7RidGPy8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGRy8lKXN0cmV0Y2h5R0ZHLyUqc3ltbWV0cmljR0ZHLyUobGFyZ2VvcEdGRy8lLm1vdmFibGVsaW1pdHNHRkcvJSdhY2NlbnRHRkcvJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR0ZWLUYsNiVRIm5GJ0YvRjJGPy1GQjYtUSgmbWludXM7RidGP0ZFRkhGSkZMRk5GUEZSL0ZVUSwwLjIyMjIyMjJlbUYnL0ZYRmpuLUY8NiRRIjFGJ0Y/Rj9GK0Y/RitGPw== must be divisible by a prime of the same form. b) Question 2.13 from the text. This question requires that you first choose 100 consecutive seven digit numbers and factor them using trial division (you can simply use Maple's ifactor command. What is the distribution of the sizes of the primes dividing your integers? How many of the integers LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUkjbWlHRiQ2JVEibkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy9GM1Enbm9ybWFsRic= have a prime factor larger than LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYqLUklbXN1cEdGJDYlLUkjbWlHRiQ2JVEibkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1GIzYlLUkmbWZyYWNHRiQ2KC1JI21uR0YkNiRRIjNGJy9GNlEnbm9ybWFsRictRiM2JS1GPjYkUSI0RidGQUYyRjUvJS5saW5ldGhpY2tuZXNzR1EiMUYnLyUrZGVub21hbGlnbkdRJ2NlbnRlckYnLyUpbnVtYWxpZ25HRk0vJSliZXZlbGxlZEdRJmZhbHNlRidGMkY1LyUxc3VwZXJzY3JpcHRzaGlmdEdRIjBGJy1JI21vR0YkNi1RIixGJ0ZBLyUmZmVuY2VHRlIvJSpzZXBhcmF0b3JHRjQvJSlzdHJldGNoeUdGUi8lKnN5bW1ldHJpY0dGUi8lKGxhcmdlb3BHRlIvJS5tb3ZhYmxlbGltaXRzR0ZSLyUnYWNjZW50R0ZSLyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdRLDAuMzMzMzMzM2VtRictRlc2LVEifkYnRkFGWi9GZ25GUkZobkZqbkZcb0Zeb0Zgb0Ziby9GZm9GZG8tRiw2JUYuLUYjNiUtRjs2KC1GPjYkUSIxRidGQS1GIzYlLUY+NiRRIjJGJ0ZBRjJGNUZIRktGTkZQRjJGNUZTRlYtRiw2JUYuLUYjNiUtRjs2KEZjcC1GIzYlRj1GMkY1RkhGS0ZORlBGMkY1RlMtRlc2LVEiP0YnRkFGWkZbcEZobkZqbkZcb0Zeb0Zgby9GY29RLDAuMTExMTExMWVtRicvRmZvRmdxRkE= Describe the distribution, mean, and standard deviation of the logarithm of the largest prime factor divided by the logarithm of LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUkjbWlHRiQ2JVEibkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy9GM1Enbm9ybWFsRic=.