Anonymní profil Wrunx – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Wrunx – Programujte.comAnonymní profil Wrunx – Programujte.com

 

Příspěvky odeslané z IP adresy 188.120.195.–

Wrunx
Python › Vigenerova šifra
18. 10. 2011   #148777

Stopovat tvoje představy o interpretaci Vigenerovy šifry sice nedokážu, ale tady je případně jedno elegantní a funkční řešení:

from itertools import starmap, cycle                                      
 
def zakoduj(zprava, klic):
    zprava = filter(lambda _: _.isalpha(), zprava.upper())# vyhodi vsechny nealfabeticke znaky
    def zaa(c,k): return chr(((ord(k) + ord(c)) % 26) + ord('A'))# kodovani 
    return "".join(starmap(zaa, zip(zprava, cycle(klic))))
 
def rozkoduj(zprava, klic):
    def roo(c,k): return chr(((ord(c) - ord(k)) % 26) + ord('A'))# dekodovani
    return "".join(starmap(roo, zip(zprava, cycle(klic))))
    
#pouziti:
text = "Tento text chci zasifrovat"
klic = "VIGENEROVASIFRA"   
zakod = zakoduj(text, klic)
rozkod = rozkoduj(zakod, klic)
print text; print zakod;print rozkod

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý