Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
[Python] criptare
Nuovo argomento   Rispondi    Indice del forum -> Programmazione
Precedente :: Successivo  
Autore Messaggio
Typhoon90
Dio maturo
Dio maturo


Registrato: 01/06/06 16:17
Messaggi: 1019
Residenza: Vivere per niente o morire per qualcosa. Scegli tu.

MessaggioInviato: 08 Feb 2008 16:03    Oggetto: [Python] criptare Rispondi citando

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
Profilo Invia messaggio privato HomePage
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 12:16
Messaggi: 11810
Residenza: Tokelau

MessaggioInviato: 08 Feb 2008 18:53    Oggetto: Re: criptare Rispondi citando

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 Wink

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
Profilo Invia messaggio privato HomePage
Typhoon90
Dio maturo
Dio maturo


Registrato: 01/06/06 16:17
Messaggi: 1019
Residenza: Vivere per niente o morire per qualcosa. Scegli tu.

MessaggioInviato: 08 Feb 2008 19:01    Oggetto: Re: criptare Rispondi citando

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 Wink

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
Profilo Invia messaggio privato HomePage
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 12:16
Messaggi: 11810
Residenza: Tokelau

MessaggioInviato: 08 Feb 2008 19:06    Oggetto: Re: criptare Rispondi citando

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
Codice:
99|105|97|111
per dire, oppure
Codice:
099105097111
e leggi 3 caratteri per volta...
Top
Profilo Invia messaggio privato HomePage
Typhoon90
Dio maturo
Dio maturo


Registrato: 01/06/06 16:17
Messaggi: 1019
Residenza: Vivere per niente o morire per qualcosa. Scegli tu.

MessaggioInviato: 08 Feb 2008 19:11    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato HomePage
freemind
Supervisor sezione Programmazione
Supervisor sezione Programmazione


Registrato: 04/04/07 21:28
Messaggi: 4643
Residenza: Internet

MessaggioInviato: 08 Feb 2008 19:15    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
Typhoon90
Dio maturo
Dio maturo


Registrato: 01/06/06 16:17
Messaggi: 1019
Residenza: Vivere per niente o morire per qualcosa. Scegli tu.

MessaggioInviato: 08 Feb 2008 19:22    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato HomePage
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 12:16
Messaggi: 11810
Residenza: Tokelau

MessaggioInviato: 08 Feb 2008 19:57    Oggetto: Rispondi

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
Profilo Invia messaggio privato HomePage
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Programmazione Tutti i fusi orari sono GMT + 2 ore
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi