X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=cipherbreak.py;h=e563b81c071410c0bfc2350687d955942076da1f;hb=1ca546941ac408759d3b10bc12d00a5d6b1b130a;hp=6f4d2aed7d037e509df96970891a7b9e1808c088;hpb=159c157fee78d4370a0e603de450bd8e2def305b;p=cipher-tools.git diff --git a/cipherbreak.py b/cipherbreak.py index 6f4d2ae..e563b81 100644 --- a/cipherbreak.py +++ b/cipherbreak.py @@ -445,26 +445,13 @@ def railfence_break(message, max_key_length=20, plaintext = railfence_decipher(message, height) fit = fitness(plaintext) return height, fit + sanitised_message = sanitise(message) results = starmap(worker, [(sanitised_message, i, fitness) for i in range(2, max_key_length+1)]) return max(results, key=lambda k: k[1]) - with Pool() as pool: - helper_args = [(message, trans, False, True, fitness) - for trans in - [[col for col in range(math.ceil(len(message)/rows))] - for rows in range(1,max_key_length+1)]] - # Gotcha: the helper function here needs to be defined at the top level - # (limitation of Pool.starmap) - breaks = pool.starmap(column_transposition_break_worker, - helper_args, chunksize) - best = max(breaks, key=lambda k: k[1]) - return math.trunc(len(message) / len(best[0][0])), best[1] -scytale_break = scytale_break_mp - - def pocket_enigma_break_by_crib(message, wheel_spec, crib, crib_position): """Break a pocket enigma using a crib (some plaintext that's expected to be in a certain position). Returns a list of possible starting wheel