Vigenerova šifra – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vigenerova šifra – Python – Fórum – Programujte.comVigenerova šifra – Python – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
jarda kužel
~ Anonymní uživatel
1 příspěvek
15. 10. 2011   #1
-
0
-

Zdravím,

řeším program na převod textu pomocí Vigenerovy šifry, ale program mi bohužel nefunguje. Mohl by mi někdo prosím poradit, kde v čem je chyba:

def sifra(slovo,znak):
        prevedeneslovo = []
        for i in range(len(slovo)):
                prevedeneslovo.append(ord(i))
        vystup=[]
        j=0
for i in prevedeneslovo:
  j=(j+1)%len(znak)
  c=(i+prevedenyznak[j])%38
  vystup.append(c)
t=chr(vystup)
print t
Nahlásit jako SPAM
IP: 212.4.142.–
zlz
~ Anonymní uživatel
634 příspěvků
16. 10. 2011   #2
-
0
-

znak je co, prevedenyznak je co, 38 je co?

Nahlásit jako SPAM
IP: 213.211.51.–
Řešení
Wrunx
~ Anonymní uživatel
35 příspěvků
18. 10. 2011   #3
-
0
-
Vyřešeno Nejlepší odpověď

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
Nahlásit jako SPAM
IP: 188.120.195.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 3 hosté

Podobná vlákna

Vigenerova šifra — založil cedric

šifra — založil selkir

Šifra — založil Jane Sheppard

Césarova šifra — založil Radek

Ceasarova šifra — založil Montezo

 

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