class TestLongWord(unittest.TestCase): def setUp(self): self.cipher = Transposition() self.cracker = LongWordAttack() self.open_text = normalize_text("jajasynpoklopurozzuresndosilenstvivodarnusrovnamsezemijmenemmistrukanvodstvijamatkuvlastnivsakkdovizdaprokouknutoumelnikolivjakpribuznismrtlidemzvodarnysmrtivrchnizradkynijenslavumistrumzcistirnytedvidisotcecozzenstinytveuzralouzjetotadybratretyslezlzradcumdozadkujensedobrepodivejcostvojijimkouprovedlimusimedrzetpospoluatuznenimarnesnazenivejmenusatanarozpoutejmepeklouzsevmychpredstavachrodisedevyjevykrasnemodrenadrzecimtakrychlecernajinenitonahodouodpadnivodamrtverybynahazimedovodarenskychobjektuuznehodlamdalnaslouchattemvodarenskymblabolumsedekrysysezerouzbytkyvodarenskychkonstrukcipredpovidamvecnouskazuvodarenskemafiitakjakodavnopredcasemjsmesvatouchatrutopilystejnykonecpripravimepodvodnikumzvodarnynelzeveritnikomukdomatlamuplnoucistotyvsechnytyhlebestiecekavodazestokysmrtlidemzvodarnysmrtivrchnizradkynijenslavumistrumzcistirnyzevsechstrannavodarnusilaspinyutocizhorastavbydrtizeleznemepoklopydokristalovevodytecoucistirenskesplaskysabotaztospachanavejmenusedepravdy") def test_cs_keylen4(self): self._help_test_method("pass") def test_cs_keylen7(self): self._help_test_method("hfewqjn") def test_cs_keylen10(self): self._help_test_method("fhwtudxnbs") def _help_test_method(self, key): key = self.cipher._repair_key(key) cipher_text = self.cipher.encrypt(self.open_text, key) langmodel = LangModel(get_lang_path('cs')) langmodel.get_words = self.get_words cracked_key = self.cracker.crack(cipher_text, LanguageStats(langmodel)) self.assertEqual(cracked_key, key) def get_words(self, length): words = { 4: ['ucis', 'vody', 'ahoj', 'burt', 'test', 'fail'], 7: ['poklopu', 'asdfghj', 'poklopy'], 10: ['kristalove'] } return words.get(length, [])
def test_decrypt(self): cipher = Transposition() open_text = normalize_text("Python is a general-purpose, interpreted high-level programming language") key = "password" cipher_text = cipher.encrypt(open_text, key) decrypted_text = cipher.decrypt(cipher_text, key) expected = open_text + "xx" self.assertEqual(decrypted_text, expected)
def test_encrypt(self): cipher = Transposition() open_text = normalize_text("Python is a general-purpose, interpreted high-level programming language") cipher_text = cipher.encrypt(open_text, "password") expected = "hnpripiapapnevannrsrhogeiaeelglxsliteraxterehlmuoeopgrngygutdemg" self.assertEqual(cipher_text, expected)