Witam stworzyłem niedawno program szyfrujący i deszyfrujący do szyfru vigenere'a https://pl.wikipedia.org/wiki/Szyfr_Vigen%C3%A8re%E2%80%99a . Gływnym problemem jest to że nie działa a przynajmniej nie tak jakbym się tego spodziewał.
problem : jeżeli w slowie jest litera "z" to program wypisuje "z" a nie powinno tak być. np z i z powinno dać y a nie z
a oto program :
alfabet = []
tab = []
def calfabet(start):
for litera in range(start, 91):
alfabet.append(litera)
for reszta in range(65, start):
alfabet.append(reszta)
print(alfabet)
def csmallalefabet(start):
for litera in range(start, 122):
alfabet.append(litera)
for reszta in range(97, start):
alfabet.append(reszta)
def encrypt(wordlit, keylit):
calfabet(wordlit)
tab.append(alfabet[keylit-65])
alfabet.clear()
def decrypt(wordlit, keylit):
calfabet(keylit)
z = alfabet.index(wordlit)
alfabet.clear()
calfabet(65)
tab.append(alfabet[z])
alfabet.clear()
print("Co chcesz zaszyfrowac lub odszyfrowac?")
x = input().upper()
print("podaj slowo klucz:")
y = input().upper()
word = []
key = []
wordi = 0
keyi = 0
for znak in x:
word.append(ord(znak))
for znak in y:
key.append(ord(znak))
while len(key) < len(word):
key = key*2
print("co chcesz zrobic? \n 1) zaszyfrowac: \n 2) odszyfrowac: ")
wybor = input()
if wybor == "1":
while len(tab) < len(x):
if word[wordi] in range(65, 90):
encrypt(word[wordi], key[keyi])
wordi += 1
keyi += 1
else:
tab.append(word[wordi])
wordi += 1
else:
while len(tab) < len(x):
if word[wordi] in range(65, 90):
decrypt(word[wordi], key[keyi])
wordi += 1
keyi += 1
else:
tab.append(word[wordi])
wordi += 1
wynik2 = str
wynik = []
for znak in tab:
wynik.append(chr(znak))
wynik2 = "".join(wynik)
print(wynik2)