9 jupytext_version: 1.11.1
11 display_name: Python 3 (ipykernel)
16 ```python Collapsed="false"
17 from szyfrow.caesar import *
18 from szyfrow.affine import *
19 from szyfrow.keyword_cipher import *
20 from szyfrow.column_transposition import *
21 from szyfrow.vigenere import *
22 from szyfrow.polybius import *
23 from szyfrow.support.text_prettify import *
27 import matplotlib.pyplot as plt
33 ```python Collapsed="false"
35 plaintext_a_filename = f'plaintext.{challenge_number}a.txt'
36 plaintext_b_filename = f'plaintext.{challenge_number}b.txt'
37 ciphertext_a_filename = f'ciphertext.{challenge_number}a.txt'
38 ciphertext_b_filename = f'ciphertext.{challenge_number}b.txt'
41 ```python Collapsed="false"
42 nca = open(ciphertext_a_filename).read()
43 cb = open(ciphertext_b_filename).read()
45 numtrans = ''.maketrans('12345', 'abcde')
46 ca = nca.translate(numtrans)
49 rsca = cat(reversed(sca))
51 rscb = cat(reversed(scb))
55 sca_counts = collections.Counter(sca)
60 pd.Series(sca_counts).sort_index().plot.bar()
64 key_a, score_a = polybius_break(sca, column_labels='abcde', row_labels='abcde',
70 word_a, wrap_a, col_a, row_a, col_first_a = key_a
71 polybius_decipher(sca, keyword=word_a, column_order=col_a, row_order=row_a,
72 column_first=col_first_a, wrap_alphabet=wrap_a)
76 xca = polybius_decipher(sca, keyword='a', column_order=col_a, row_order=row_a,
77 column_first=col_first_a, wrap_alphabet=wrap_a)
82 word_a, _ = monoalphabetic_sa_break(xca)
87 pa = keyword_decipher(xca, word_a)
95 ```python Collapsed="false"
96 open(plaintext_a_filename, 'w').write(prettify(pa))
108 scb = cat(c for c in cb if c in '01')
113 ncb = [int(g, 2) for g in cb.split()]
118 tcb = cat(unpos(n) for n in ncb)
123 word_b, score_b = monoalphabetic_sa_break(tcb)
128 word_b, score_b = vigenere_frequency_break(tcb, fitness=Ptrigrams)
130 pb = vigenere_decipher(tcb, word_b)
138 ```python Collapsed="false"
139 open(plaintext_b_filename, 'w').write(prettify(pb))
142 ```python Collapsed="false"