Come si usa
- Digita o incolla un testo, imposta Formato input su Esadecimale per inserire byte esadecimali, oppure usa Apri file per calcolare l’hash dei byte esatti di un file.
- Lascia Codifica del testo su UTF-8, a meno che l’hash originale non sia stato calcolato da un testo in un altro set di caratteri.
- In Formato output scegli hex (minuscole), HEX (maiuscole) o Base64.
- Per verificare un download, incolla l’MD5 pubblicato nel campo Confronta con e controlla che compaia Corrisponde.
Che cos’è MD5?
MD5 (Message-Digest Algorithm 5) è stato progettato da Ronald Rivest e pubblicato nel 1992 come RFC 1321. Legge l’input in blocchi da 512 bit e produce un digest di 128 bit, di solito scritto come 32 caratteri esadecimali o 24 caratteri Base64. Lo stesso input dà sempre lo stesso digest, e modificare un solo bit dell’input cambia circa la metà dei bit dell’output.
L’hashing è unidirezionale: non c’è alcuna chiave e non esiste modo di "decifrare" un hash MD5 per risalire all’input. I siti che promettono di invertire MD5 cercano l’hash in enormi tabelle con gli hash di parole comuni e password trapelate: per questo l’MD5 senza salt di una password corta viene spesso trovato in pochi secondi.
MD5 è ancora sicuro?
Non contro un attaccante. Nel 2004 Xiaoyun Wang e i suoi colleghi hanno pubblicato collisioni pratiche: due input diversi con lo stesso MD5. Sono seguite le collisioni a prefisso scelto: nel 2008 alcuni ricercatori ne hanno usata una per creare un falso certificato di CA, e nel 2012 il malware Flame ne ha sfruttata una per contraffare un certificato che faceva sembrare il suo codice firmato da Microsoft. Oggi un normale portatile trova una collisione MD5 in pochi secondi, e la RFC 6151 afferma che MD5 non è più accettabile dove serve resistenza alle collisioni, come nelle firme digitali.
MD5 va ancora bene come checksum contro i danni accidentali, come un download incompleto o un bit alterato su disco, oppure come chiave di cache o per deduplicare dati attendibili. Quando il file o il suo checksum potrebbero provenire da un attaccante, usa invece SHA-256.
Esadecimale, Base64 e hash che non corrispondono
MD5 si scrive normalmente in esadecimale, il formato restituito da md5sum. Alcuni protocolli invece trasmettono i 16 byte grezzi in Base64, per esempio l’header HTTP Content-MD5 usato dalle API di cloud storage come Amazon S3. Scegli Base64 in Formato output, oppure converti un valore esistente con Esadecimale in Base64.
Se il tuo MD5 è diverso da quello di un altro strumento, i byte di input sono diversi. Le cause tipiche sono un carattere di nuova riga in coda, i terminatori di riga Windows o un’altra codifica del testo: "café" occupa 5 byte in UTF-8 ma 4 byte in ISO-8859-1, quindi i due hash non hanno nulla in comune.
$ echo "hello" | md5sum # hash di "hello\n"
b1946ac92492d2347c6235b4d2611184 -
$ printf 'hello' | md5sum # hash di "hello"
5d41402abc4b2a76b9719d911017c592 -
MD5 dalla riga di comando e nel codice
md5sum file.iso # Linux
md5 file.iso # macOS
certutil -hashfile file.iso MD5 # Windows
Get-FileHash file.iso -Algorithm MD5 # PowerShell
# Python
import hashlib
hashlib.md5('hello'.encode('utf-8')).hexdigest()
// Node.js
require('crypto').createHash('md5').update('hello', 'utf8').digest('hex')
L’API Web Crypto integrata nei browser non include MD5, quindi questa pagina lo calcola in JavaScript sul tuo dispositivo; non viene caricato nulla. La tabella Tutti gli algoritmi sotto il risultato mostra SHA-1, SHA-256, SHA-384, SHA-512, CRC-32 e CRC-32C per lo stesso input.
Esempi
| Input (UTF-8) | MD5 |
|---|---|
Hello, World! | 65a8e27d8879283831b664bd8b7f0ad4 |
Base64.is | 2e3c0e8b828164a8db7f62146ca87e14 |
你好 | 7eca689f0d3389d9dea66ae112e5cfd7 |
Domande frequenti
Un hash MD5 si può decifrare?
MD5 basta per verificare un download?
Rileva in modo affidabile la corruzione accidentale. Poiché le collisioni costano poco, però, chi prepara un file in anticipo può creare un secondo file, diverso, con lo stesso MD5. Per i download rilevanti ai fini della sicurezza, controlla un hash SHA-256 ottenuto da una fonte attendibile oppure una firma.
Quanto è lungo un hash MD5?
==. Una stringa esadecimale di 32 caratteri potrebbe anche essere un hash MD4 o NTLM; l’Identificatore di hash elenca i candidati.Posso calcolare l’MD5 di un file di grandi dimensioni?
md5sum o certutil.