Algoritmo criptazione

Stato
Discussione chiusa ad ulteriori risposte.

!R~

Utente Silver
22 Maggio 2009
0
0
0
55
Fatto insieme ad un altro pythoniano, TTDH:

Crypter(TTDH):
Codice:
#!/usr/bin/python
from random import *
def cret(a):
    e=len(a)
    s=""
    p=-1
    for i in range(e):
        p+=1
        if p==0:
            r=randint(1,90)
            w=chr(ord(a[p])+r)
            s+=w
        else:
            al=ord(a[p-1])
            wa=chr(ord(a[p])+al)
            s+=wa
    return s
x=1
while x==1:
    a=raw_input("Inserisci la parola: ")
    print cret(a)
    dom=raw_input("Per criptare un' altra volta premi invio mentre se vuoi chiudere il prog premi 1 e poi invio: ")
    if dom=="1":
        x=0

Decrypter(!R~):
Codice:
def decript_1(a):  
   first = a[0]
   fileopen = open(raw_input("Inserisci il percorso del file: "), 'w')
   for i in range(1, 90):
       fileopen.write(chr(ord(first) - i))
       fileopen.write("\n")
   fileopen.close()

def decript_2(a):
   p = -1
   s = ""
   caracter = len(a[1:])
   caracter2 = a[1:]
   first_chr = raw_input("Inserisci il carattere decriptato in precedenza: ")
   s+=first_chr
   for i in range(caracter):
       p+=1
       if p == 0:
           b = ord(caracter2[p])
           b1 = ord(first_chr)
           w = chr(b - b1)
           s+=w
           last_chr = w
       else:
           b2 = ord(caracter2[p])
           b3 = ord(last_chr)
           w2 = chr(b2 - b3)
           s+=w2
           last_chr = w2
   print s

def main():
   a = raw_input("Inserisci la parola da decriptare: ")
   decript_1(a)
   decript_2(a)

main()
Il modo in cui decriptare fa un po' schifo, nel senso che mette l'utente di fronte ad ua scelta tra 90 possibilità. Ma usando la funzione randint() non vedo altri metodi per poter decriptare.

Come sempre, sono ben accetti commenti e consigli :)
 
(l'indentazione della funzione cret nn c'è...)

appena ho tempo gli do un'occhiata.

edit: ok letto, allora:

1)passa a 3.1, ma se lo dico ancora fra un po' mi tirate dietro un bidone...
2)nn sembra male, tuttavia se vuoi un decript sicuro: piazza almeno una parte del valore rand nel cript, di modo che, magari, riduci la scelta a 10, cmq meno di 90.
 
1) Fra un po' ti tiro dietro un bidone :D
Scherzo, è che è una questione d'abitudine :p

2) Facendo così l'algoritmo risulterebbe meno potente. Per migliorarlo ho pensato di far calcolare al decripter tutte le 90 combinazioni possibili decriptando le altre lettere con tutti i 90 caratteri che vengono salvati nel file di testo, per poi far salvare le 90 combinazioni in un nuovo file di testo.
Anche perchè senza la prima lettera esatta anche le altre saranno sbagliate, quindi, salvo coincidenze, solo una delle combinazioni avrà un senso logico.

P.S: ho corretto l'indentazione.
 
[ot]
look.gif
[/ot]
 
Stato
Discussione chiusa ad ulteriori risposte.