Hejka, na przedmiocie z elementami kryptografii dostałem zadanie napisania programu wykonującego szyfrowanie, deszyfrowanie i atak na szyfr na bazie nieregularnej transpozycji (https://mattomatti.com/pl/a35ad) sęk w tym że nie miałem nigdy do czynienia z pythonem. Mógłby ktoś ocenić, wskazać jak poprawić błędy w poniższym kodzie tak aby działał? Nauczyciel w ogóle nie mógł tego włączyć, mówił że można to zrobić prościej, wskazywał też przyczynę na tę linijke:
table[j] = table[j - 1] + vcode[(j - 1) % len(vcode)]
brak zaindeksowania j, i że łatwiej by było gdybym skorzystał z ciągu znaków zamiast listy. Tylko że pythona na oczy widzę trzeci dzień w porównaniu z pozostałymi osobami na roku które mają oklepany przez ostatnie 2 lata studiów i wiem że nie zdążę nadrobić zanim wykonam zadanie. Dziękuje bardzo za pomoc.
def createKey(key):
dl=0
values= [dl+1]
i = 0
for i in i<dl:
new.append(i)
i += 1
values[i]=2*(key[i]-'0')+1
values[dl]='\0'
print(values)
return values
def encrypt(txt, vcode):
txt_dl = len(txt)
dl = 0
k = 0
while dl < txt_dl:
dl+=vcode[ k % len(vcode)]
k +=1
table=[i]
table[0]=0
for j in j<k:
j += 1
table[j] = table[j - 1] + vcode[(j - 1) % len(vcode)]
wynik=[txt_dl+1]
max = vcode[0];
for j in vcode[j]:
j=1
j += 1
if vcode[i] > max:
max=vcode[j]
max = (max -1) / 2
zapis =0
for j in j >= -max:
j = max
j +- 1
for i in i<k:
i = 0
i += 1
if((vcode[i % len(vcode)] - 1) / 2 >= abs(j)):
if wynik[zapis+1] == (zapis >= txt_dl):
' '
else:
txt[table[i]]
table[i]+=1
wynik[zapis]='\0'
return wynik
def decrypt(dectxt,decode):
dectxt_dl=len(dectxt)
dl=0
k=0
while (dl < txt_dl):
dl += decode[k % len(decode)]
k+=1
max =decode[0]
for i in decode[i]:
i=1
i+=1
if(decode[i] > max):
max = decode[i]
table = new[max]
table[0] = 0
max = (max - 1) / 2
for j in j>=- max:
j= max -1
j-=1
table[- j + max] = table[- j + max - 1]
for i in i<k:
i=0
i+=1
if((decode[i % len(decode)] - 1) / 2 >= abs(j + 1)):
table[- j + max]+=1
wynik = [dectxt_dl + 1]
zapis = 0;
for i in i<k:
i=0
i+=1
for j in j < (decode[i % len(decode)] - 1) / 2 + 1:
j = -(decode[i % len(decode)] - 1) / 2
j+=1
wynik[zapis+1] = txt[table[j + max]];
table[j + max]+1
wynik[zapis] = '\0';
#delete[] table;
return wynik
code=[33]
txt=[257]
vcode= createKey(code)
#print(createKey(code))
print(encrypt(txt,vcode))