Cosa fa questo strumento
Calcola l'hash MD5 di qualsiasi testo o file nel tuo browser, restituendo un digest esadecimale di 32 caratteri. MD5 è una funzione di hash a 128 bit dell'RFC 1321, progettata da Ron Rivest nel 1991. È veloce — file da diversi gigabyte si hashano in secondi — ma non è resistente alle collisioni: due input distinti possono essere ingegnerizzati per produrre lo stesso hash MD5, e questo è stato dimostrato in natura dal 2005.
Quando MD5 va bene
- ETag e cache content-addressable. Una cache web che hasha i suoi oggetti con MD5 sta usando l'hash come chiave di bucket veloce, non come garanzia di sicurezza. Il modello di attaccante è « due client producono accidentalmente lo stesso contenuto », che MD5 ancora gestisce bene.
- Deduplicazione di file su un set fidato. Se controlli gli input (i tuoi backup, i documenti del tuo team), le collisioni MD5 sono astronomicamente improbabili senza un attaccante.
- Confrontare con un checksum legacy. Vecchi download di software, liste di mirror FTP e documentazione pre-2010 spesso pubblicano solo MD5. Verificare quel numero è ciò per cui MD5 serve.
- Impronta rapida di un file prima del trasferimento. Due ingegneri che confrontano se hanno « lo stesso file » beneficiano della velocità di MD5; il modello di minaccia è errore umano, non collisione avversaria.
Quando MD5 non va bene
- Archiviazione password. Usa un hash di password lento e salato come bcrypt, scrypt o Argon2. MD5 è troppo veloce — una GPU moderna calcola miliardi di MD5 al secondo, quindi qualsiasi database leakkato viene rainbow-tabled in minuti.
- Firme digitali o certificati. Le collisioni sono reali. I ricercatori hanno costruito certificati CA fraudolenti sfruttando collisioni MD5 nel 2008. Qualsiasi cosa che lasci a un attaccante scegliere l'input è rotta.
- Verifica di integrità contro un attaccante determinato. Se l'attaccante può forgiare il file che stai hashando, MD5 non ti protegge. SHA-256 sì.
- Qualsiasi cosa che la conformità moderna richieda in SHA-2 o SHA-3. PCI DSS, FIPS 140-3 e la maggior parte degli standard governativi hanno proibito MD5 per nuove applicazioni dalla fine degli anni 2000.
Vettori di test
Verifica l'implementazione contro i vettori di test canonici dell'RFC 1321:
- Stringa vuota
""→d41d8cd98f00b204e9800998ecf8427e "a"→0cc175b9c0f1b6a831c399e269772661"abc"→900150983cd24fb0d6963f7d28e17f72"message digest"→f96b697d7cb7938d525a2f31aaf161d0"The quick brown fox jumps over the lazy dog"→9e107d9d372bb6826bd81d3542a419d6
Incolla uno qualsiasi di questi nell'input sopra; il digest deve corrispondere esattamente.
Note
Perché l'hash è di 32 caratteri e non 16? MD5 produce 128 bit = 16 byte. Ogni byte si rende in 2 caratteri hex, dando 32 caratteri visibili. Il digest sottostante è di 16 byte in entrambi i modi.
MD5 fa trapelare informazioni sull'input? Crittograficamente, no — dato un hash non puoi recuperare l'input. Ma per input brevi o strutturati (parole singole, password comuni) puoi cercare l'hash in una rainbow table pubblica in millisecondi. Per questo MD5 non è adatto all'archiviazione password anche quando « salato debolmente ».
Perché il mio MD5 differisce da quello che restituisce md5sum? Molto probabilmente l'input differisce per un newline finale. echo "hello" aggiunge \n; incollare "hello" qui no. Usa echo -n, o hasha il file direttamente con il selettore di file.
Strumenti correlati
- Generatore di hash — calcola MD5, SHA-1, SHA-256, SHA-384 e SHA-512 affiancati
- SHA-256 — il default moderno per hashing rilevante in sicurezza
- Base64 — abbinato a MD5 per chiavi di archiviazione content-addressable