Che cos’è un hash MD5
Un generatore di hash MD5 applica la funzione di hash MD5. Questa prende un input qualsiasi, da una lettera a un file grande, e produce un’impronta di dimensione fissa di 128 bit, scritta di solito come 32 caratteri esadecimali. Lo stesso input dà sempre lo stesso hash. Una minima modifica, anche di un solo carattere, dà un hash completamente diverso.
Ron Rivest ha pubblicato l’MD5 nel 1992. È ancora diffuso per i checksum nelle pagine di download, per individuare file duplicati, come chiave di cache e per rilevare rapidamente le modifiche. Non è più considerato sicuro, come spiegato più sotto.
Come usare il generatore MD5
Hash di un testo. Sotto Hash di, lascia selezionato Testo e scrivi o incolla nel riquadro. Gli hash si aggiornano mentre scrivi. Il testo viene elaborato come UTF-8, esattamente come lo inserisci, spazi e a capo compresi.
Anche gli accenti contano: perché in UTF-8 occupa 7 byte e ha MD5 9ec9c29be21ecf2943988d3dc8ac5e69. Lo stesso testo salvato in un’altra codifica avrebbe byte diversi, e quindi un hash diverso.
Hash di un file. Premi File e scegli un file fino a 500 MB. Il file viene letto sul tuo dispositivo. Quando gli hash sono pronti vengono mostrati il nome del file e la sua dimensione in byte.
Leggere i risultati. Il pannello Hash mostra quattro risultati:
- MD5, evidenziato, 32 caratteri esadecimali
- SHA-1, 40 caratteri
- SHA-256, 64 caratteri
- SHA-512, 128 caratteri
Ognuno ha il suo pulsante Copia. Premi Maiuscole se ti servono lettere maiuscole.
Confrontare con un hash noto. Incolla in questo campo un checksum preso da una pagina di download. Lo strumento lo confronta con tutti e quattro i risultati e ti dice quale corrisponde. Se nessuno corrisponde, usa la lunghezza del tuo hash per dirti a quale algoritmo somiglia.
Come funziona l’MD5
L’MD5 completa l’input fino a un multiplo di 512 bit e lo elabora a blocchi. Ogni blocco passa per 64 cicli di rimescolamento dei bit che combinano addizioni, rotazioni e operazioni logiche. Lo stato finale, formato da quattro parole da 32 bit, è l’hash. Con tanto rimescolamento l’output sembra casuale e cambia del tutto quando cambia un qualsiasi bit dell’input. Si chiama effetto valanga.
Esempi
| Input | MD5 |
|---|---|
| (vuoto) | d41d8cd98f00b204e9800998ecf8427e |
abc |
900150983cd24fb0d6963f7d28e17f72 |
hello |
5d41402abc4b2a76b9719d911017c592 |
Hello |
8b1a9953c4611296a827abf8c47804d7 |
Hello, World! |
65a8e27d8879283831b664bd8b7f0ad4 |
The quick brown fox jumps over the lazy dog |
9e107d9d372bb6826bd81d3542a419d6 |
The quick brown fox jumps over the lazy dog. |
e4d909c290d0fb1ca068ffaddf22cbd0 |
Le ultime due righe differiscono solo per un punto finale, eppure gli hash non hanno niente in comune.
Lo stesso input, abc, con gli altri algoritmi:
| Algoritmo | Hash di abc |
|---|---|
| SHA-1 | a9993e364706816aba3e25717850c26c9cd0d89d |
| SHA-256 | ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad |
Sicurezza: per cosa l’MD5 va bene e per cosa no
Va bene: per controllare che un file sia arrivato senza danni, trovare file duplicati, creare chiavi di cache e identificativi senza requisiti di sicurezza.
Non va bene: per password, firme digitali, certificati, o per dimostrare che un file non è stato modificato da qualcuno che vuole ingannarti. Attacchi pratici di collisione contro l’MD5 sono pubblici dal 2004. Un attaccante può costruire due file diversi con lo stesso MD5.
Le password richiedono un hash lento. Anche lo SHA-256 è troppo veloce per le password. Usa bcrypt, scrypt o Argon2, pensati apposta per rallentare i tentativi. Un hash MD5 semplice di una password, come 5f4dcc3b5aa765d61d8327deb882cf99 (la parola “password”), viene riconosciuto subito da qualsiasi sito di ricerca.
Altri modi per ottenere un hash MD5
Linux. md5sum file.zip stampa l’hash e il nome del file. echo -n hello | md5sum calcola l’hash di un testo. Se ometti -n, nell’hash finisce anche l’a capo.
macOS. md5 file.zip, oppure md5 -s hello per un testo.
Windows. certutil -hashfile file.zip MD5 nel Prompt dei comandi, oppure Get-FileHash file.zip -Algorithm MD5 in PowerShell.
Python. hashlib.md5(b'hello').hexdigest() restituisce 5d41402abc4b2a76b9719d911017c592.
Node.js. require('crypto').createHash('md5').update('hello').digest('hex') dà lo stesso valore.
Strumenti correlati
Ti serve una password e non un hash? Usa il generatore di password sicure. Per gli identificativi univoci, il generatore di UUID è più adatto che calcolare l’hash di dati casuali. Per codificare dati binari come testo, vedi la codifica e decodifica Base64.