from itertools import chain
import multiprocessing
-from support.utilities import *
-from support.language_models import *
-from cipher.column_transposition import transpositions_of
+from szyfrow.support.utilities import *
+from szyfrow.support.language_models import *
+from szyfrow.column_transposition import transpositions_of
-from logger import logger
def make_cadenus_keycolumn(doubled_letters = 'vw', start='a', reverse=False):
"""Makes the key column for a Cadenus cipher (the column down between the
doubled_letters='vw', fitness=Pbigrams):
c = make_cadenus_keycolumn(reverse=True)
valid_words = [w for w in words
- if max(transpositions_of(w)) <= len(c)]
+ if len(transpositions_of(w)) == len(message) // 25]
with multiprocessing.Pool() as pool:
results = pool.starmap(cadenus_break_worker,
[(message, w,
for w in words
for s in string.ascii_lowercase
for r in [True, False]
- if max(transpositions_of(w)) <= len(
- make_cadenus_keycolumn(
- doubled_letters=doubled_letters, start=s, reverse=r))
+ # if max(transpositions_of(w)) <= len(
+ # make_cadenus_keycolumn(
+ # doubled_letters=doubled_letters, start=s, reverse=r))
])
# return list(results)
return max(results, key=lambda k: k[1])
def cadenus_break_worker(message, keyword, keycolumn, fitness):
- message_chunks = chunks(message, 175)
- plaintext = ''.join(cadenus_decipher(c, keyword, keycolumn) for c in message_chunks)
+ # message_chunks = chunks(message, 175)
+ # plaintext = ''.join(cadenus_decipher(c, keyword, keycolumn) for c in message_chunks)
+ plaintext = cadenus_decipher(message, keyword, keycolumn)
fit = fitness(plaintext)
return (keyword, keycolumn), fit