def test_encrypt(self): cipher = Vigenere() open_text = normalize_text("Python is a general-purpose, interpreted high-level programming language") cipher_text = cipher.encrypt(open_text, "a") self.assertEqual(cipher_text, open_text) cipher_text = cipher.encrypt(open_text, "bc") expected = "qaujppjubifpftbnqwsrpufkovftqtfvffikhjmgwgmrsqhtbonkoimcoivchg" self.assertEqual(cipher_text, expected) cipher_text = cipher.encrypt(open_text, "password") expected = "eylzkbzvpgwfafroeujhkgvlctwjlfvwtdzacvchkedhncxupmeajucdcgmscs" self.assertEqual(cipher_text, expected) self.assertEqual(cipher.encrypt("", "a"), "")
def test_cs_crack(self): cipher = Vigenere() cracker = VigenereBruteForce() open_text = normalize_text("jasynpoklopurozzurendosilenstvivodarnusrovnamsezemijmenemmistrukanvodstvijamatkuvlastnivsakkdovizdaprokouknutoumelnikolivjakpribuznismrtlidemzvodarnysmrtivrchnizradkynijenslavumistrumzcistirnytedvidisotcecozzenstinytveuzralouzjetotadybratretyslezlzradcumdozadkujensedobrepodivejcostvojijimkouprovedlimusimedrzetpospoluatuznenimarnesnazenivejmenusatanarozpoutejmepeklouzsevmychpredstavachrodisedevyjevykrasnemodrenadrzecimtakrychlecernajinenitonahodouodpadnivodamrtverybynahazimedovodarenskychobjektuuznehodlamdalnaslouchattemvodarenskymblabolumsedekrysysezerouzbytkyvodarenskychkonstrukcipredpovidamvecnouskazuvodarenskemafiitakjakodavnopredcasemjsmesvatouchatrutopilystejnykonecpripravimepodvodnikumzvodarnynelzeveritnikomukdomatlamuplnoucistotyvsechnytyhlebestiecekavodazestokysmrtlidemzvodarnysmrtivrchnizradkynijenslavumistrumzcistirnyzevsechstrannavodarnusilaspinyutocizhorastavbydrtizeleznemepoklopydokristalovevodytecoucistirenskesplaskysabotaztospachanavejmenusedepravdy") key = "qwasd" cipher_text = cipher.encrypt(open_text, key) langmodel = LangModel(get_lang_path('cs')) cracked_key = cracker.crack(cipher_text, LanguageStats(langmodel)) self.assertEqual(cracked_key, key)
def test_cs_crack(self): cipher = Vigenere() cracker = VigenereBruteForce() open_text = normalize_text( "jasynpoklopurozzurendosilenstvivodarnusrovnamsezemijmenemmistrukanvodstvijamatkuvlastnivsakkdovizdaprokouknutoumelnikolivjakpribuznismrtlidemzvodarnysmrtivrchnizradkynijenslavumistrumzcistirnytedvidisotcecozzenstinytveuzralouzjetotadybratretyslezlzradcumdozadkujensedobrepodivejcostvojijimkouprovedlimusimedrzetpospoluatuznenimarnesnazenivejmenusatanarozpoutejmepeklouzsevmychpredstavachrodisedevyjevykrasnemodrenadrzecimtakrychlecernajinenitonahodouodpadnivodamrtverybynahazimedovodarenskychobjektuuznehodlamdalnaslouchattemvodarenskymblabolumsedekrysysezerouzbytkyvodarenskychkonstrukcipredpovidamvecnouskazuvodarenskemafiitakjakodavnopredcasemjsmesvatouchatrutopilystejnykonecpripravimepodvodnikumzvodarnynelzeveritnikomukdomatlamuplnoucistotyvsechnytyhlebestiecekavodazestokysmrtlidemzvodarnysmrtivrchnizradkynijenslavumistrumzcistirnyzevsechstrannavodarnusilaspinyutocizhorastavbydrtizeleznemepoklopydokristalovevodytecoucistirenskesplaskysabotaztospachanavejmenusedepravdy" ) key = "qwasd" cipher_text = cipher.encrypt(open_text, key) langmodel = LangModel(get_lang_path('cs')) cracked_key = cracker.crack(cipher_text, LanguageStats(langmodel)) self.assertEqual(cracked_key, key)