Generatore di hash MD5

Calcola il digest MD5 a 128 bit di un testo, di byte esadecimali o di un file. L’hash si aggiorna mentre digiti e il campo Confronta con ti dice se corrisponde al checksum che ti aspettavi.

Tutti gli algoritmi

Funziona interamente nel tuo browser. Non viene caricato nulla.

Come si usa

  1. 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.
  2. 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.
  3. In Formato output scegli hex (minuscole), HEX (maiuscole) o Base64.
  4. 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.is2e3c0e8b828164a8db7f62146ca87e14
你好7eca689f0d3389d9dea66ae112e5cfd7

Domande frequenti

Un hash MD5 si può decifrare?
No. MD5 è una funzione di hash unidirezionale, non una cifratura, quindi non c’è nulla da decifrare: un "decifratore MD5" può solo restituire un input che si trova già nelle sue tabelle. Se in seguito ti servono di nuovo i dati originali, cifrali; se invece non devono restare segreti, codificali in Base64, che è completamente reversibile.
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?
128 bit, cioè 16 byte: 32 caratteri in esadecimale oppure 24 caratteri in Base64 che terminano con ==. 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?
Sì. Apri il file e i suoi byte vengono elaborati nel browser senza essere caricati. Il limite è la memoria che il browser può usare, quindi per file di diversi gigabyte conviene usare md5sum o certutil.
Conviene salvare le password come hash MD5?
No. MD5 è progettato per essere veloce, quindi una sola GPU prova miliardi di tentativi al secondo. Salva le password con Argon2id, scrypt, bcrypt o PBKDF2, che aggiungono un salt e sono lenti di proposito. Per creare fin dall’inizio password robuste, usa il Generatore di password.