from itertools import combinations
import pickle
from ocesavac import ocesat
-
-MABECEDA = ' ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+from spolecne import MABECEDA
def nova_tabulka(zprava, abc=MABECEDA):
"""Vraci tabulku cetnosti bigramu ve zprave nad danou abecedou."""
index_rozkladu(text, d), d) for d in range(1, 11)])
def rozklad(text, deleni):
- """Vrati pole retezcu, v kazdem jsou znaky z puvodniho textu jejich pozice
+ """Vrati pole retezcu, v kazdem jsou znaky z puvodniho textu jejichz pozice
ma stejny zbytek po deleni cislem 'deleni'."""
texty = []
for i in range(deleni):
"""Modul pro odstranovani diakritiky a zvlastnich znaku."""
-import unicodedata
-ABECEDA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+import unicodedata
+from spolecne import ABECEDA
def deaccent(unistr):
"""Vrati text bez akcentu. Pochybna metoda pouzivajici unicodedata."""
import referencni
from referencni import reference
from ocesavac import ocesat
-
-ABECEDA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+from spolecne import ABECEDA
def posun(char, pos=1):
"""Pokud dostane velke pismeno, vrati pismeno ktere je od nej vzdaleno
return sum([(x - y)**2 for (x, y) in zip(vec1, vec2)])
def nejlepsi(text):
- """Vrati to posunuti textu (neocesaneho), ktere ma frekvence znaku
+ """Vrati text (neocesany) posunuty tak, aby mel frekvence znaku co
nejblizsi cestine bez mezer."""
+ posunuti = nej_posun(text)
+ return (posunuti, ''.join([posun(char, posunuti) for char in text.upper()]))
+
+def nej_posun(text):
+ """Vrati pocet znaku v abecede, o ktere by se mel text posunout, aby mel
+ frekvence znaku co nejblize cestine bez mezer."""
ref = referencni.nacti('bref')
freq = dict()
for char in ocesat(text, False):
if nova_vzdalenost < vzdalenost:
vzdalenost = nova_vzdalenost
posunuti = i
- return (posunuti, ''.join([posun(char, posunuti) for char in text.upper()]))
+ return posunuti
\ No newline at end of file
from ocesavac import ocesat
import codecs
from koincidence import index_koincidence
-
-ABECEDA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-MABECEDA = ' ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+from spolecne import ABECEDA, MABECEDA
def nova_tabulka(tabulka, abc=MABECEDA):
celkem = sum(sum(tab2.values()) for tab2 in tabulka.values())
import pickle
import os
import re
-
-ABECEDA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+from spolecne import ABECEDA
+import vigenere
class settings:
pass
analyza.append("\nIndexy koincidence (bez mezer):")
analyza.append(koincidence.tabulka_indexu(zprava))
+# Vigenere
+if 'V' in opsny:
+ analyza.append("\nHeslo k Vigenerovi (" + opsny[-1] + "):")
+ analyza.append(vigenere.zjisti_heslo(zprava, int(opsny[-1])))
+
# Jakobsen
if mod_m:
analyza.append("\nJakobsen (s mezerami):")
--- /dev/null
+ABECEDA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+MABECEDA = ' ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+
+def cisla_na_text(cisla):
+ """Z pole cisel udela textovy retezec (1 = A, ...)."""
+ return ''.join([MABECEDA[c] for c in cisla])
\ No newline at end of file
--- /dev/null
+"""Modul pro lamani Vigenerovi sifry."""
+
+from koincidence import rozklad
+from ocesavac import ocesat
+from posuny import nej_posun
+from spolecne import cisla_na_text
+
+def zjisti_heslo(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