L’MD5 è un algoritmo relativamente sicuro per salvare password e dati “sensibili” all’interno ad esempio di database o strutture dati. Il suo utilizzo è sempre più di moda tra i programmatori: molti CMS e sistemi operativi lo utilizzano massivamente (Joomla, WordPress e Linux anche se utilizza un sistema un pò diverso ma sempre basato sul principio dell’MD5).
Ma cos’è questo algoritmo innanzitutto? Cerchiamo di capirlo dalla sua definizione:
L’acronimo MD5 (Message Digest algorithm 5) indica un algoritmo crittografico di hashing realizzato da Ronald Rivest nel 1991 e standardizzato con la RFC 1321.
Questo tipo di codifica prende in input una stringa di lunghezza arbitraria e ne produce in output un’altra a 128 bit (ovvero con lunghezza fissa di 32 valori esadecimali, indipendentemente dalla stringa di input) che può essere usata per calcolare la firma digitale dell’input.
La codifica avviene molto velocemente e si presuppone che l’output (noto anche come “MD5 Checksum” o “MD5 Hash”) restituito sia univoco (ovvero si ritiene che sia impossibile, o meglio, che sia altamente improbabile ottenere con due diverse stringhe in input una stessa firma digitale in output) e che non ci sia possibilità, se non per tentativi, di risalire alla stringa di input partendo dalla stringa di output (la gamma di possibili valori in output è pari a 16 alla 32esima potenza).
Tratto da Wikipedia
In parole povere, è un algoritmo che permette di ottenere da una qualasiasi stirnga (di qualsiasi lunghezza maggiore di zero) un altra stringa alfanumerica (esadecimale), di lunghezza fissa che descrive univocamente la stringa di partenza, ma non è in alcun modo riconducibile alla precedente: cioè da un hash ottenuto tramite l’algoritmo MD5 non è possibile risalire in alcun modo diretto alla stringa originante. E’ proprio questo il motivo per cui questo algoritmo è molto utilizzato, infatti anche se ci fosse un grave exploit software che permetta ad un malintenzionato di ottenere i dati salvati, esso non sarà in grado (direttamente) di ottenere i dati salvati, ma solo l’hash esadecimale che li caratterizza.