From: Tomas Musil Date: Fri, 30 Mar 2012 12:40:19 +0000 (+0200) Subject: desifrace vigenera X-Git-Url: http://git.tomasm.cz/krypto.git/commitdiff_plain/e82ac8869b514b97e306852ab06b4576704d1a4a?ds=sidebyside;hp=a57d58771fd023c23d1eb55e612c5a2bda49619a desifrace vigenera --- 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)