From: Neil Smith Date: Sat, 22 Mar 2014 21:06:06 +0000 (+0000) Subject: Up to first breaking of caesar ciphers X-Git-Url: https://git.njae.me.uk/?p=cipher-training.git;a=commitdiff_plain;h=c66f8f6051ce9526591de9a4ac4a94bcddf89e48 Up to first breaking of caesar ciphers --- diff --git a/slides/caesar-break.html b/slides/caesar-break.html index f296e44..c2556cf 100644 --- a/slides/caesar-break.html +++ b/slides/caesar-break.html @@ -314,6 +314,39 @@ We also need a way of passing the different functions to the keyfinding function Try them all on random ciphertexts, see which one works best. +--- + +# Reading letter probabilities + +1. Load the file `count_1l.txt` into a dict, with letters as keys. + +2. Normalise the counts (components of vector sum to 1): `$$ \hat{\mathbf{x}} = \frac{\mathbf{x}}{\| \mathbf{x} \|} = \frac{\mathbf{x}}{ \mathbf{x}_1 + \mathbf{x}_2 + \mathbf{x}_3 + \dots }$$` + * Return a new dict + * Remember the doctest! + +3. Create a dict `Pl` that gives the log probability of a letter + +4. Create a function `Pletters` that gives the probability of an iterable of letters + * What preconditions should this function have? + * Remember the doctest! + +--- + +# Breaking caesar ciphers (at last!) + +## Remember the basic idea + +``` +for each key: + decipher with this key + how close is it to English? + remember the best key +``` + +Try it on the text in `2013/1a.ciphertext`. Does it work? + +--- +