Criptare e decriptare MD5

31 gennaio 2009

In rete è pieno di domande riguardanti la possibilità di decriptare un hash MD5. Vediamo di fare un po’ di chiarezza su cos’è MD5, e come decriptarlo.

La prima cosa da capire è che MD5 è un algoritmo di hashing, non un sistema crittografico. Qual è la differenza? Una crittografia è un processo a due vie: criptazione e decriptazione. Un hash invece è un processo che può andare solo in un verso: criptazione.

Da un hash non si può quindi risalire a ciò che l’ha originata, se non per (quasi infiniti) tentativi. Inoltre, l’hash dato da un file o da una stringa è univoco, e solo il medesimo file o la medesima stringa origineranno lo stesso hash; solo in rarissimi casi si sono verificate collisioni: due stringhe diverse che generavano lo stesso hash.

La stringa risultante dall’operazione di hashing è una stringa fissa di 128 bit, ossia 32 caratteri, chiamata MD5 Checksum o MD5 Hash.

md5In cosa può essere utile un hash? Uno degli impieghi più utili è sicuramente in rete. Dato che solo un file può generare un determinato hash, basta mostrare l’hash veritiero di un programma e dire all’utente: “Guarda che se l’hash che file che hai scaricato è diverso da questo qui, probabilmente hai scaricato un fake!”.

Un altro caso sono i forum e i cms che devono salvare e gestire delle password. Salvando nel database database gli hash MD5 delle password invece che le password in chiaro, fa in modo che anche se a causa di un bug nel portale porti un utente malintenzionato a scoprire una password, non potrà quasi mai (capiremo più avanti il perché del quasi) risalire alla vera password. Quando l’utente effettuerà l’accesso, basterà cerare un hash della password immessa e confrontarla con quella salvata.

Dato che abbiamo capito che il processo di hashing non ammette decriptazione, dobbiamo rassegnarci al fatto che non avremo mai un algoritmo matematico che ci permetta di decriptare un hash.

Nel tempo sono nati però una serie di servizi online che promettono la decriptazione di un hash MD5 anche se, come abbiamo visto, matematicamente non è possibile.

Come funzionano quindi questi siti? Non fanno altro che fornire anche la possibilità di criptare una stringa. In questo modo, quando un utente immetterà una stringa e ne richiederà l’operazione di hash, il servizio salverà nel suo database l’accoppiata hash-parola in chiaro. Quando un altro utente richiederà la decriptazione del medesimo hash, il servizio non farà altro che cercare nel database la parola in chiaro e restituirla.

Ecco una lista dei più grandi servizi di questo genere:

Spero di aver chiarito ogni dubbio e di aver spiegato, a chi non sapeva, come funziona il tutto. Per qualunque dubbio/richiesta, sono qui.

7 Responses to “Criptare e decriptare MD5”


  1. Io ho scritto un programma in PHP per ricercare il testo in chiaro di un hash PHP col motodo della Forza Bruta.

    http://www.guizzardi.net/

  2. Ste_95 Says:

    Grazie Gabriele, lo proverò in questi giorni tanto per vedere come funziona🙂

  3. oettam Says:

    un altro ottimo sito è
    md5dictionary.altervista.org

  4. miki Says:

    più ci penso e più non mi trovo … mi spiego meglio … inizio a indicare la password normale con la lettera A e la password dopo essere stata “algoritmizzata” (MD5) con la lettera B. La mia ossevazione è la seguente:
    Se A porta B in maniera univoca (o quasi, utilizzo il quasi non per il fatto dei siti ma per “due stringhe diverse che generavano lo stesso hash”) perchè non può esserci un processo che da B riporti ad A???
    mi spiego meglio se la parola miki corrispondesse in MD5 alla stringa “$1dsjh$rts” per quale motivo da “$1dsjh$rts” non dovrei ricavarmi la parola “miki” ???
    Ho provato a fare delle ipotesi e se “dealgoritmizzando” la stringa “$1dsjh$rts” ottenessimo più valori quindi non ci riporterebbe alla stringa A in modo univoco … ma per quale motivo?

  5. Ste_95 Says:

    Ciao, scusami la tarda risposta.

    Il punto è che, mentre la stringa di partenza può essere di una lunghezza indefinita (decine se non centinaia di caratteri, senza un limite reale), l’hash MD5 è sempre e solo di 128 bit. Quindi non puoi tornare indietro, sostanzialmente per le ragioni che già intuivi tu😉

  6. Luca Bernini Says:

    Perché per criptare si utilizzano operazioni con funzioni non invertibili!😉


Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: