# Cryptography Programming Lab

AI and Robotics

Nov 21, 2013 (4 years and 5 months ago)

109 views

Cryptography Programming Lab

Mike Scott

Why Cryptography?

Astrachan’s

Law:

“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

Plan for today

Look at four different ciphers

Complete program involving each

Caesar

Columnar

Random Substitution

Vigenère

Definitions

Cryptography

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

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

Caesar cipher

Example with a shift of 5

ABCDEFGHIJKLMNOPQRSTUVWXYZ
Plain

FGHIJKLMNOPQRSTUVWXYZABCDE

Encrypted

COMPUTER SCIENCE
Plain

HTRUZYJWXHNJSHJ

Encrypted

Assume all non letters removed.

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?

Breaking Caesar Cipher

Brute force

With only letters try all 25 possibilities

Still not hard if all ASCII

Caesar Programming Problem

Go to http://userweb.cs.utexas.edu/~scottm/

Click on link to Crypto Resources at bottom of
page

Start Eclipse (or other IDE if you prefer)

Create project

Complete method
printAllShifts
(String
msg
)

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

Columnar Encryption

Hook ‘
em

Horns! We bleed orange!

Read off rows to create message

H’o

loeoerWer!omneeak

s
dn

H!b

g

H

'

o

l

o

e

o

e

r

W

e

r

!

o

m

n

e

e

a

k

s

d

n

H

!

b

g

Columnar Programming Problem

Complete the method

printColumnar
(String clear,

int

rows)

Random Substitution Cipher

How strong is the Caesar cipher?

Pick a secret word with no repeat letters,
computery

ABCDEFGHIJKLMNOPQRSTUVWXYZ

Plain

COMPUTERY
ABDFGHIJKLNQSVWXZ

Encrypted

Example

ABCDEFGHIJKLMNOPQRSTUVWXYZ

Plain

COMPUTERY
ABDFGHIJKLNQSVWXZ

Encrypted

THE ANSWER FOR NUMBER THREE IS A

Plain

NRUCGLVUKNHGQFOUKNRKUUYLC

Encrypted

Random Substitution Ciphers

Instead of picking a keyword randomly pick
letters

Must share the whole key, but lots of
possibilities

26! possible keys =
4.03291461
×

10
26

Assume we could check a billion keys a second

It would take
1.27882883
×

10
10
years to
check them all.

About the age of the universe

But ...

But substitution ciphers turn out to be
relatively easy to solve

Why?

Letter Frequency

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

Substitution Programming Problem

With a computer a key can easily be created that
uses all printable characters not just the letters.

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

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)

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

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

Vigenère

Cipher Example

Secret word:
TEXAS

Plain text:
MEET AT THE TOWER

TEXASTEXASTEXA

MEETATTHETOWER

1
st

letter, row T, column M
-
> F

2
nd

letter, row E, column E
-
> I

3
rd

letter, row X, column E
-
> B

FIBTSMXEELHABR

Large
Vigenère

Example

0
2
4
6
8
10
12
14
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
Actual
Expected
Frequencies In Cipher text

0
1
2
3
4
5
6
7
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
Longer Secret Words with more of the letters flattens it more!

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

Cipher Text

BLX
DLA
MPSLHVVFJHQLNWPLLHSWRLBMLMK
EKLXLTWEPFTLHQBOJMSXNQHXEEJBQXYUKIAI
LMLBSWWYZTAOIFNXEYBNUXSCAFHPAVAGXX
GWNTLNLAIKAJKEQOJYSOTZXFBGAGRFNYHJF
TSGHJYGPRPKWIXFCSEMKCJXHRLAMCAUJBRD
TZXHXYKMLXTXHPIOOXHCOJMLBBSEEKCWHJ
MPCGOIOEVMLXTZXLXDLHPAMWLSJUUAEK

DLA
EQIOTWMRGGIQOVHYYTXNPKEKL

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

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

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]

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

125
-

1

130
-

1

135
-

1

145
-

1

159
-

1

165
-

1

255
-

2

265
-

2

270
-

1

Secret Code Word

Strong evidence the code word is length 5

analysis on every 5
th

character. Will just be a
simple Caesar shift

Repeat starting at second character and every
5
th

5 frequency analysis problems

Simon Singh
Vigenère

Cracking Tool

Slide for Best Fit

First Letter of Secret Word is V in this example

Vigenère

Programming Problem

Complete the

p
rintFactors
(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.