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">
50 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
51 --|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|--
52 k | e | y | w | o | r | d | a | b | c | f | g | h | i | j | l | m | n | p | q | s | t | u | v | x | z
54 * Taking a more Pythonic approach
60 * Still character-by-character substitution, still monosubstitution.
62 Ciphertext alphabet: start with a keyword, write out the rest of the alphabet, removing duplicates.
66 Write out the rest of the alphabet...
68 1. ...starting from 'a' (keywordabcf...)
69 2. ...starting from the last unique letter of the keyword (keywordfgh...)
70 3. ...starting from the largest letter of the keyword (keywordzabc...)
73 <script src=
"http://gnab.github.io/remark/downloads/remark-0.6.0.min.js" type=
"text/javascript">
76 <script type=
"text/javascript"
77 src=
"http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML&delayStartupUntil=configured"></script>
79 <script type=
"text/javascript">
80 var slideshow = remark.create({ ratio:
"16:9" });
85 skipTags: ['script', 'noscript', 'style', 'textarea', 'pre']
88 MathJax.Hub.Queue(function() {
89 $(MathJax.Hub.getAllJax()).map(function(index, elem) {
90 return(elem.SourceElement());
91 }).parent().addClass('has-jax');
93 MathJax.Hub.Configured();