Salve a tutti, oggi voglio consultarmi con voi riguardo un algoritmo di cifratura fatto da me... Vorrei sentire i vostri commenti riguardo alla sicurezza di questo.
Premetto che ci saranno dei buchi nell algoritmo, spero mi aiuterete a migliorare sia me che l'algoritmo.
Questo è il codice:
codice HTML:def crypt(x): matrix=[["10","00","11","10"],["00","11","01","11"],["11","01","10","00"],["01","10","00","01"]] content=[] message=list(x) start="" v1=0 l1=0 ma="" ultimate="" ak="" for word in message: ak+=str(ord(word)) ak=int(ak) for item in message: start+=str(bin(ord(item)))[2:len(str(bin(ord(item))))] char=len(start) if char%4==0: while char>v1: content+=[start[v1:v1+4]] v1=v1+4 while l1<len(content): i=content[l1][0] j=content[l1][3] f=content[l1][1] g=content[l1][2] external=str(i)+str(j) internal=str(f)+str(g) if external=="00": if internal=="00": m=matrix[0][0] elif internal=="01": m=matrix[0][1] elif internal=="10": m=matrix[0][2] elif internal=="11": m=matrix[0][3] elif external=="01": if internal=="00": m=matrix[1][0] elif internal=="01": m=matrix[1][1] elif internal=="10": m=matrix[1][2] elif internal=="11": m=matrix[1][3] elif external=="10": if internal=="00": m=matrix[2][0] elif internal=="01": m=matrix[2][1] elif internal=="10": m=matrix[2][2] elif internal=="11": m=matrix[2][3] elif external=="11": if internal=="00": m=matrix[3][0] elif internal=="01": m=matrix[3][1] elif internal=="10": m=matrix[3][2] elif internal=="11": m=matrix[3][3] ma+=m l1=l1+1 key1=int(ma,2) key2=(6364136223846793005*key1+1442695040888963407)%(2**64) tempkey1=str(bin(key2))[0:len(str(bin(key2)))/2] tempkey2=str(bin(key2))[len(str(bin(key2)))/2:len(str(bin(key2)))] keystream=int(tempkey1,2)|int(tempkey2,2) storage=content lenght=len(content) loop=0 if lenght%2!=0: lenght=len(content)-1 while lenght>0: tmplist=content[lenght-1] content.pop(lenght-1) content.insert(lenght-2,tmplist) lenght=lenght-2 while loop<len(content): tmplist2=content[loop] content.pop(loop) tmplist2=reversed(tmplist2) for i in tmplist2: ultimate+=i content.insert(loop,ultimate) loop=loop+1 chipertext=int(start,2)|int(ultimate,2) chipertext=chipertext+int(start,2)+int(ultimate,2) digit=keystream|chipertext digit=int(str(digit),36) tpass=str(digit)[len(str(digit))-5:len(str(digit))-1] reversetpass=reversed(str(int(tpass)*digit+(int(tpass)*ak+1)%64)) v="" for j in reversetpass: v+=j v=int(v) digit=str(digit) kdigit=int(digit[0:len(digit)/2]) k2digit=int(digit[len(digit)/2:len(digit)]) digit=v&kdigit digit2=v|k2digit digit=str(digit)+str(digit2) digit=int(digit,36) digit=str(hex(digit))[2:len(str(digit))-1] return digit else: while (char%4)!=0: char=char-1 extra=start[char:len(start)] extra=int(extra,2) start=start[0:char] while char>v1: content+=[start[v1:v1+4]] v1=v1+4 while l1<len(content): i=content[l1][0] j=content[l1][3] f=content[l1][1] g=content[l1][2] external=str(i)+str(j) internal=str(f)+str(g) if external=="00": if internal=="00": m=matrix[0][0] elif internal=="01": m=matrix[0][1] elif internal=="10": m=matrix[0][2] elif internal=="11": m=matrix[0][3] elif external=="01": if internal=="00": m=matrix[1][0] elif internal=="01": m=matrix[1][1] elif internal=="10": m=matrix[1][2] elif internal=="11": m=matrix[1][3] elif external=="10": if internal=="00": m=matrix[2][0] elif internal=="01": m=matrix[2][1] elif internal=="10": m=matrix[2][2] elif internal=="11": m=matrix[2][3] elif external=="11": if internal=="00": m=matrix[3][0] elif internal=="01": m=matrix[3][1] elif internal=="10": m=matrix[3][2] elif internal=="11": m=matrix[3][3] ma+=m l1=l1+1 key1=int(ma,2) key2=(6364136223846793005*key1+1442695040888963407)%(2**64) tempkey1=str(bin(key2))[0:len(str(bin(key2)))/2] tempkey2=str(bin(key2))[len(str(bin(key2)))/2:len(str(bin(key2)))] keystream=int(tempkey1,2)|int(tempkey2,2) storage=content lenght=len(content) loop=0 if lenght%2!=0: lenght=len(content)-1 while lenght>0: tmplist=content[lenght-1] content.pop(lenght-1) content.insert(lenght-2,tmplist) lenght=lenght-2 while loop<len(content): tmplist2=content[loop] content.pop(loop) tmplist2=reversed(tmplist2) for i in tmplist2: ultimate+=i content.insert(loop,ultimate) loop=loop+1 chipertext=int(start,2)|int(ultimate,2) chipertext=chipertext+int(start,2)+int(ultimate,2) digit=keystream|chipertext digit=int(str(digit),36) tpass=str(digit)[len(str(digit))-5:len(str(digit))-1] reversetpass=reversed(str(int(tpass)*digit+(int(tpass)*ak+extra)%64)) v="" for j in reversetpass: v+=j v=int(v) digit=str(digit) kdigit=int(digit[0:len(digit)/2]) k2digit=int(digit[len(digit)/2:len(digit)]) digit=v&kdigit digit2=v|k2digit digit=str(digit)+str(digit2) digit=int(digit,36) digit=str(hex(digit))[2:len(str(digit))-1] return digit

Rispondi quotando
