Precedente :: Successivo |
Autore |
Messaggio |
Typhoon90 Dio maturo


Registrato: 01/06/06 16:17 Messaggi: 1019 Residenza: Vivere per niente o morire per qualcosa. Scegli tu.
|
Inviato: 08 Feb 2008 16:03 Oggetto: [Python] criptare |
|
|
così per spasso, sto provando a creare un programma per criptare del testo, la parte che riguarda la criptazione è ok, infatti converte le parole in serie di numeri, solo che non riesco a decriptarli dopo.
Qualche idea?
Ecco il codice:
Codice: |
y = 0
while y == 0:
n = input("Scrivi 0 per criptare, 1 per decriptare e 2 per terminare il programma: ")
if n == 0:
testo = raw_input("Inserisci il testo da criptare: ")
lunghezza = len(testo)
contatore = 0
lettera = ""
while contatore < lunghezza:
lettera = lettera + str(ord(testo [contatore]))
contatore = contatore + 1
print lettera
elif n == 1:
criptato = raw_input("Inserisci il testo da decriptare: ")
n_lettere = len(criptato)
contatore1 = 0
contatore2 = 1
contatore3 = 2
lettera = ""
contatore = 0
x = 0
while contatore < n_lettere:
if int(criptato [0+x]) == 9:
x = x + 2
lettera = lettera + str(chr(int(criptato [contatore1]+ criptato [contatore2])))
print lettera
contatore1 = contatore1 + 1
contatore2 = contatore2 + 1
else:
x = x + 3
lettera = lettera + str(chr(int(criptato [contatore1]+ criptato [contatore2] + criptato [contatore3])))
print lettera
contatore = contatore + 1
contatore1 = contatore1 + 1
contatore2 = contatore2 + 1
contatore3 = contatore3 + 1
print lettera
elif n == 2:
x = 1
else:
print "Valore non valido"
|
L'ultima modifica di Typhoon90 il 09 Feb 2008 22:50, modificato 1 volta |
|
Top |
|
 |
SverX Supervisor Macchinisti


Registrato: 25/03/02 12:16 Messaggi: 11810 Residenza: Tokelau
|
Inviato: 08 Feb 2008 18:53 Oggetto: Re: criptare |
|
|
Typhoon90 ha scritto: | così per spasso, sto provando a creare un programma per criptare del testo, la parte che riguarda la criptazione è ok, infatti converte le parole in serie di numeri, solo che non riesco a decriptarli dopo. |
allora li hai criptati bene
a parte la facile battuta, fai una codifica reversibile o no? Ovvero, nella formula con la quale codifichi, perdi delle informazioni che poi ti sarebbero utili durante la decodifica? |
|
Top |
|
 |
Typhoon90 Dio maturo


Registrato: 01/06/06 16:17 Messaggi: 1019 Residenza: Vivere per niente o morire per qualcosa. Scegli tu.
|
Inviato: 08 Feb 2008 19:01 Oggetto: Re: criptare |
|
|
SverX ha scritto: | Typhoon90 ha scritto: | così per spasso, sto provando a creare un programma per criptare del testo, la parte che riguarda la criptazione è ok, infatti converte le parole in serie di numeri, solo che non riesco a decriptarli dopo. |
allora li hai criptati bene
a parte la facile battuta, fai una codifica reversibile o no? Ovvero, nella formula con la quale codifichi, perdi delle informazioni che poi ti sarebbero utili durante la decodifica? |
8) 8) 8)
ma certo che è reversibile!
praticamente la codifica consiste nel trasformare ogni lettera del testo in un numero corrispondente utilizzando ord() (previo adeguata conversione stringa - numero ecc...) e quindi si ottengono sequenze di numeri.
esempio pratico:
non criptato: ciao
criptato: 9910597111
99 = c
105 = i
97 = a
111 = o |
|
Top |
|
 |
SverX Supervisor Macchinisti


Registrato: 25/03/02 12:16 Messaggi: 11810 Residenza: Tokelau
|
Inviato: 08 Feb 2008 19:06 Oggetto: Re: criptare |
|
|
Typhoon90 ha scritto: | non criptato: ciao
criptato: 9910597111 |
ok ma se non separi i numeri (o non le fai tutte di 3 caratteri esempio) come fai poi a rileggerli nel modo corretto?
fai per dire, oppure e leggi 3 caratteri per volta... |
|
Top |
|
 |
Typhoon90 Dio maturo


Registrato: 01/06/06 16:17 Messaggi: 1019 Residenza: Vivere per niente o morire per qualcosa. Scegli tu.
|
Inviato: 08 Feb 2008 19:11 Oggetto: |
|
|
potrebbe essere una soluzione, anche se preferirei non mettere separatori, comunque provo, poi ti saprò dire (avevo pensato a una soluzione più contorta al problema)
grazie |
|
Top |
|
 |
freemind Supervisor sezione Programmazione


Registrato: 04/04/07 21:28 Messaggi: 4643 Residenza: Internet
|
Inviato: 08 Feb 2008 19:15 Oggetto: |
|
|
Citazione: |
ma certo che è reversibile!
praticamente la codifica consiste nel trasformare ogni lettera del testo in un numero corrispondente utilizzando ord() (previo adeguata conversione stringa - numero ecc...) e quindi si ottengono sequenze di numeri.
esempio pratico:
non criptato: ciao
criptato: 9910597111
99 = c
105 = i
...
|
In realtà il problema è proprio che l'algoritmo non è invertibile perchè il codice da te utilizzato non è parlante.
Se segui questa strada sei obbligato a mettere dei separatori ma la cosa non va bene... ti conviene "paddare" tutti i numeri a 3 se usi l'ascii a 7/8 bit.
Nel tuo esempio la c diventerebbe 099.
Quando decripti dovrai eliminare questi '0' prima dei numeri. |
|
Top |
|
 |
Typhoon90 Dio maturo


Registrato: 01/06/06 16:17 Messaggi: 1019 Residenza: Vivere per niente o morire per qualcosa. Scegli tu.
|
Inviato: 08 Feb 2008 19:22 Oggetto: |
|
|
freemind ha scritto: | Citazione: |
ma certo che è reversibile!
praticamente la codifica consiste nel trasformare ogni lettera del testo in un numero corrispondente utilizzando ord() (previo adeguata conversione stringa - numero ecc...) e quindi si ottengono sequenze di numeri.
esempio pratico:
non criptato: ciao
criptato: 9910597111
99 = c
105 = i
...
|
In realtà il problema è proprio che l'algoritmo non è invertibile perchè il codice da te utilizzato non è parlante.
Se segui questa strada sei obbligato a mettere dei separatori ma la cosa non va bene... ti conviene "paddare" tutti i numeri a 3 se usi l'ascii a 7/8 bit.
Nel tuo esempio la c diventerebbe 099.
Quando decripti dovrai eliminare questi '0' prima dei numeri. |
ho capito, che altri metodi seguireste voi per criptare un testo? |
|
Top |
|
 |
SverX Supervisor Macchinisti


Registrato: 25/03/02 12:16 Messaggi: 11810 Residenza: Tokelau
|
Inviato: 08 Feb 2008 19:57 Oggetto: |
|
|
Typhoon90 ha scritto: | che altri metodi seguireste voi per criptare un testo? |
posto che questo non è criptare ma codificare (perchè chiunque, in possesso solo dell'algoritmo, può decodificare) a questo punto prova ad implementare uno UUEncode o un Base64... il secondo non è per niente difficile, basta leggere le specifiche e -nella codifica- ogni 3 byte diventano 4 caratteri... è la stessa che si usa per gli allegati MIME nella posta elettronica (poichè i sistemi di posta -un tempo- gradivano solo i caratteri ASCII tra 0 e 127, e i primi 32 erano 'di controllo'...) |
|
Top |
|
 |
|