Malá hra o velkého Bajta (4) - Vigenérova šifra

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

koblížek007
nováček
Příspěvky: 1
Registrován: 02 čer 2018 18:04

Re: Malá hra o velkého Bajta (4) - Vigenérova šifra

Příspěvek od koblížek007 »

Zatím se učím a zkouším.

Pouze šifrování:

Kód: Vybrat vše

import unidecode

puvodni_zprava = unidecode.unidecode(input("Zadejte zprávu k šifrování: "))
heslo = unidecode.unidecode(input("Zadejte heslo: "))

abeceda = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
otocena_abeceda = abeceda[::-1]
i = 0

def kontrola():
	global i

	velikost_hesla = len(heslo)

	if i >= velikost_hesla:
		i = 0
	else:
		pass

	if heslo[i] in abeceda:
		pass
	else:
		i = i + 1
		kontrola()

for znak in puvodni_zprava:
	if znak in abeceda:
		pass
	else:
		print(znak)
		continue

	kontrola()

	if(znak == heslo[i]):
		print(otocena_abeceda[0])
	else:
		vzdalenost_prvni = abeceda.find(znak)
		vzdalenost_prvni = vzdalenost_prvni + 1
		vzdalenost_druha = otocena_abeceda.find(heslo[i])

		vzdalenost = vzdalenost_prvni + vzdalenost_druha

		if(vzdalenost > 26):
			vzdalenost = vzdalenost - 26

		print(otocena_abeceda[vzdalenost])

	i = i + 1
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7405
Registrován: 23 pro 2010 09:23

Re: Malá hra o velkého Bajta (4) - Vigenérova šifra

Příspěvek od faraon »

Vítej na PC-Help, pěkný začátek. Jen malou poznámku - reciproká šifra má tu výhodu, že šifrovací funkce je zároveň dešifrovací. Takže s heslem "A" (neboli posun 0) bude:

Kód: Vybrat vše

OT: ABCDEFGHIJKLMNOPQRSTUVWXYZ
ŠT: ZYXWVUTSRQPONMLKJIHGFEDCBA
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)
Odpovědět

Zpět na „Programování a tvorba webu“