jakobsen5 vypada nejlepe
[krypto.git] / vigenere.py
1 """Modul pro lamani Vigenerovi sifry."""
2
3 from koincidence import rozklad
4 from ocesavac import ocesat
5 from posuny import nej_posun, posun
6 from spolecne import cisla_na_text
7
8 def soucet(x, y):
9     return x + y
10
11 def vsechno(zprava, delka_h):
12     """Najde heslo dane delky, pri jehoz aplikaci budou frekvence znaku nejlepe
13     odpovidat cestine a patricne posunuty text."""
14     rozklady = rozklad(ocesat(zprava, False), delka_h)
15     posuny = [nej_posun(text) for text in rozklady]
16     posunute = [''.join([posun(c, posuny[i]) for c in rozklady[i]]) for i in range(len(posuny))]
17     vysledek = [x for x  in reduce(soucet, (map(None, *posunute)[i] for i in range(len(rozklady[0])))) if x]
18     return cisla_na_text(posuny), ''.join(vysledek)