4 <title>Affine ciphers
</title>
5 <meta http-equiv=
"Content-Type" content=
"text/html; charset=UTF-8"/>
6 <style type=
"text/css">
15 h1 { font-size:
3em; }
16 h2 { font-size:
2em; }
17 h3 { font-size:
1.6em; }
19 text-decoration: none;
22 -moz-border-radius:
5px;
23 -web-border-radius:
5px;
31 text-shadow:
0 0 20px #
333;
37 text-shadow:
0 0 20px #
333;
46 <textarea id=
"source">
51 `making sense of this`
57 Ciphertext is re-split into groups to hide word bounaries.
59 How can we rediscover the word boundaries?
65 1. Try all possible word boundaries
66 2. Return the one that looks most like English
68 What's the complexity of this process?
70 * (We'll fix that in a bit...)
74 # What do we mean by
"looks like English"?
76 Naïve Bayes bag-of-words worked well for cipher breaking. Can we apply the same intuition here?
78 Probability of a bag-of-words (ignoring inter-word dependencies).
80 Finding the counts of words in text is harder than letters.
82 * More tokens, so need more data to cover sufficient words.
86 <script src=
"http://gnab.github.io/remark/downloads/remark-0.6.0.min.js" type=
"text/javascript">
89 <script type=
"text/javascript"
90 src=
"http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML&delayStartupUntil=configured"></script>
92 <script type=
"text/javascript">
93 var slideshow = remark.create({ ratio:
"16:9" });
98 skipTags: ['script', 'noscript', 'style', 'textarea', 'pre']
101 MathJax.Hub.Queue(function() {
102 $(MathJax.Hub.getAllJax()).map(function(index, elem) {
103 return(elem.SourceElement());
104 }).parent().addClass('has-jax');
106 MathJax.Hub.Configured();