From e82ac8869b514b97e306852ab06b4576704d1a4a Mon Sep 17 00:00:00 2001 From: Tomas Musil Date: Fri, 30 Mar 2012 14:40:19 +0200 Subject: [PATCH 1/1] desifrace vigenera --- robot.py | 4 +++- vigenere.py | 11 ++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/robot.py b/robot.py index 96f5a5b..16897a6 100755 --- a/robot.py +++ b/robot.py @@ -150,7 +150,9 @@ if mod_x and len(zprava) >= 10: # Vigenere if 'V' in opsny: analyza.append("\nHeslo k Vigenerovi (" + opsny[-1] + "):") - analyza.append(vigenere.zjisti_heslo(zprava, int(opsny[-1]))) + vig_heslo, vig_text = vigere.vsechno(zprava, int(opsny[-1])) + analyza.append(vig_heslo) + analyza.append(vig_text) # Jakobsen if mod_m: diff --git a/vigenere.py b/vigenere.py index a441f57..01be7d2 100644 --- a/vigenere.py +++ b/vigenere.py @@ -2,12 +2,17 @@ from koincidence import rozklad from ocesavac import ocesat -from posuny import nej_posun +from posuny import nej_posun, posun from spolecne import cisla_na_text -def zjisti_heslo(zprava, delka_h): +def soucet(x, y): + return x + y + +def vysledek(zprava, delka_h): """Najde heslo dane delky, pri jehoz aplikaci budou frekvence znaku nejlepe odpovidat cestine.""" rozklady = rozklad(ocesat(zprava, False), delka_h) posuny = [nej_posun(text) for text in rozklady] - return cisla_na_text(posuny) \ No newline at end of file + posunute = [''.join([posun(c, posuny[i]) for c in rozklady[i]]) for i in range(len(posuny))] + vysledek = [x for x in reduce(soucet, (map(None, *posunute)[i] for i in range(len(rozklady[0])))) if x != None] + return cisla_na_text(posuny), ''.join(vysledek) -- 2.4.2