Download presentation
Presentation is loading. Please wait.
1
Cryptography Programming Lab
Mike Scott
2
Why Cryptography? Astrachan’s Law: Secrets are interesting
“Do not give an assignment that computes something that is more easily figured out without a computer. ... Show off the power of computation.” Secrets are interesting Practical applications Is it safe to use my credit card to purchase something via a website? Fascinating history Mary Queen of Scots, Alan Turing Application of mathematics and programming
3
Plan for today Look at four different ciphers
Complete program involving each Caesar Columnar Random Substitution Vigenère
4
Definitions Cryptography Cipher Encryption Decryption
The art and study of hiding information Cipher Algorithm for performing encryption and decryption Encryption Converting plain text (or information) to unintelligible text (aka cipher text) that cannot be understood without knowing how the information was converted Decryption recovering the original plain text from the cipher text
5
Caesar Cipher Named after Julius Caesar Also called the shift cipher
Example of a substitution cipher Each letter (or character) is replaced by another letter in the alphabet
6
Caesar cipher Example with a shift of 5 ABCDEFGHIJKLMNOPQRSTUVWXYZ Plain FGHIJKLMNOPQRSTUVWXYZABCDE Encrypted COMPUTER SCIENCE Plain HTRUZYJWXHNJSHJ Encrypted Assume all non letters removed.
7
Variations Using computer could simply apply shift to all characters, not just upper case letters Printable ASCII characters space to ~ (32 – 126) Maintain or remove non letters? lower case to upper case?
8
Breaking Caesar Cipher
Brute force With only letters try all 25 possibilities Still not hard if all ASCII
9
Caesar Programming Problem
Log in Go to Click on link to Crypto Resources at bottom of page Download Caesar.java to desktop Start Eclipse (or other IDE if you prefer) Create project Add file Complete method printAllShifts(String msg)
10
Columnar Cipher Example of a Transposition cipher
The characters from the original message are used, but put in a different order, based on the cipher Hook ‘em Horns! We bleed orange! Plain Pick a number of rows for the cipher Fill in the grid in column major order
11
Columnar Encryption H ' o l e r W ! m n a k s d b g
Hook ‘em Horns! We bleed orange! Read off rows to create message H’o loeoerWer!omneeak s dn H!b g H ' o l e r W ! m n a k s d b g
12
Columnar Programming Problem
Download Columnar.java Complete the method printColumnar(String clear, int rows)
13
Random Substitution Cipher
How strong is the Caesar cipher? Pick a secret word with no repeat letters, computery ABCDEFGHIJKLMNOPQRSTUVWXYZ Plain COMPUTERYABDFGHIJKLNQSVWXZ Encrypted
14
Example ABCDEFGHIJKLMNOPQRSTUVWXYZ Plain COMPUTERYABDFGHIJKLNQSVWXZ Encrypted THE ANSWER FOR NUMBER THREE IS A THEANSWERTONUMBERTHREEISA Plain NRUCGLVUKNHGQFOUKNRKUUYLC Encrypted
15
Random Substitution Ciphers
Instead of picking a keyword randomly pick letters Must share the whole key, but lots of possibilities 26! possible keys = × 1026 Assume we could check a billion keys a second It would take × years to check them all. About the age of the universe
16
But ... But substitution ciphers turn out to be relatively easy to solve Why?
17
Letter Frequency
18
Cracking the Substitution Cipher
Given an encrypted message count how often each character occurs If only letters, assume most frequent letter is e, next most frequent is t, next most frequent is a, and so forth Apply the potential key Look for clear words Alter key as appropriate
19
Substitution Programming Problem
With a computer a key can easily be created that uses all printable characters not just the letters. Download DecryptSub.java Complete the method int[] createFreqTable(String encrypted) The method returns an array of length 128. All ASCII chars are counted. The index of the array maps to the ASCII value of the char
20
Substitution Programming Problem
When run the program: converts a hard coded file (which I have encrypted with a randomly generated substitution key) to a String creates a frequency table (using your method) creates an initial key based on the frequency table and the “normal” frequency of printable ASCII chars applies the initial key to the encrypted message and displays it prompts for change in key, applies it and displays new decrypted message (A bit of an art)
21
Vigenère Cipher Named after Blaise de Vigenère
“The Unbreakable Cipher” A poly-alphabetic substitution cipher Each letter in the plain text can encrypt to multiple letters
22
Vigenère Cipher All 26 Caesar Ciphers Pick a secret word
Repeat secret word over the plain text The secret word letter gives the row, the plain text gives the column The letter at the intersection is the cipher text
23
Vigenère Cipher Example
Secret word: TEXAS Plain text: MEET AT THE TOWER TEXASTEXASTEXA MEETATTHETOWER 1st letter, row T, column M -> F 2nd letter, row E, column E -> I 3rd letter, row X, column E -> B FIBTSMXEELHABR
24
Large Vigenère Example
25
Frequencies In Cipher text
Longer Secret Words with more of the letters flattens it more!
26
Breaking the Vigenère Cipher
Given a long enough sample of cipher text it is possible to break the Vigenère cipher Assume the secret word is TEXAS which has a length of 5. Notice then there are 5 ways to encode the plain text word “the” Some words show up a lot in regular language So let’s look for 3 letter sequences that are repeated in a cipher text
27
Cipher Text BLXDLAMPSLHVVFJHQLNWPLLHSWRLBMLMKEKLXLTWEPFTLHQBOJMSXNQHXEEJBQXYUKIAILMLBSWWYZTAOIFNXEYBNUXSCAFHPAVAGXXGWNTLNLAIKAJKEQOJYSOTZXFBGAGRFNYHJFTSGHJYGPRPKWIXFCSEMKCJXHRLAMCAUJBRDTZXHXYKMLXTXHPIOOXHCOJMLBBSEEKCWHJQHWLXOAFZIQADXAEEFFCZOFOMSISELLSLWMPCGOIOEVMLXTZXLXDLHPAMWLSJUUAEK DLAEQIOTWMRGGIQOVHYYTXNPKEKL
28
3 Letter Repeated Sequences
DLA [270] EKL [265] HPA [165] KEK [265] LAM [159] LXD [255] LXT [70] MLB [125] MLX [70] OJM [145] TZX [50, 130, 80] XDL [255] Numbers are distances between the repeated 3 letter sequence
29
Using Repeated Sequences
Some repeated sequences will just be random. But, some will be due to the same word being encoded with the same parts of the secret word! If this is the case the secret word is a factor of the distance between the repeated sequences
30
Factors of Distances DLA: [2, 3, 5, 6, 9, 10, 15, 18, 27, 30, 45, 54, 90, 135, 270] EKL: [5, 53, 265] HPA: [3, 5, 11, 15, 33, 55, 165] KEK: [5, 53, 265] LAM: [3, 53, 159] LXD: [3, 5, 15, 15, 17, 51, 85, 255] LXT: [2, 5, 7, 10, 14, 35, 70] MLB: [5, 25, 125] MLX: [2, 5, 7, 10, 14, 35, 70] OJM: [5, 29, 145] TZX: [2, 5, 10, 25, 50] TZX: [2, 5, 10, 13, 26, 65, 130] TZX: [2, 4, 5, 8, 8, 10, 16, 20, 40, 80] XDL: [3, 5, 15, 15, 17, 51, 85, 255]
31
Frequency of Factors 2 - 6 3 - 5 4 - 1 5 - 13 6 - 1 7 - 2 8 - 2 9 - 1
10 - 6 11 - 1 13 - 1 14 - 2 15 - 6 16 - 1 17 - 2 18 - 1 20 - 1 25 - 2 26 - 1 27 - 1 29 - 1 30 - 1 33 - 1 35 - 2 40 - 1 45 - 1 50 - 1 51 - 2 53 - 3 54 - 1 55 - 1 65 - 1 70 - 2 80 - 1 85 - 2 90 - 1
32
Secret Code Word Strong evidence the code word is length 5
So start with first character and do frequency analysis on every 5th character. Will just be a simple Caesar shift Repeat starting at second character and every 5th 5 frequency analysis problems
33
Simon Singh Vigenère Cracking Tool
34
Slide for Best Fit First Letter of Secret Word is V in this example
35
Vigenère Programming Problem
Download FindSecretWordLength.java Complete the printFactors(String repeatedSection, int distance) method that prints all factors of distance in order If you finish add a method to find the most frequent factor. Feel free to change printFactors to return the factors found.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.