Hash MD5
Strumento hash MD5 online gratuito. Modalità testo/file/batch/HMAC-MD5, UTF-8/Latin1, maiuscolo, raggruppamento 8 caratteri. ⚠️ MD5 è compromesso — NON usarlo per archiviare password.
Strumento hash MD5 online gratuito. Modalità testo/file/batch/HMAC-MD5, UTF-8/Latin1, maiuscolo, raggruppamento 8 caratteri. ⚠️ MD5 è compromesso — NON usarlo per archiviare password.
MD5 è comunemente usato per controlli di integrità dei file (come verifica dei download), generazione rapida di digest, compatibilità con sistemi legacy, chiavi di cache e deduplicazione dei dati in scenari non di sicurezza. MD5 produce 128 bit (32 caratteri esadecimali) ed è molto veloce, adatto a scenari di verifica con bassi requisiti di sicurezza.
MD5 produce 128 bit (32 hex) ed è molto veloce ma compromesso; SHA-256 produce 256 bit (64 hex), è più lento ma non ha attacchi di collisione pratici ed è preferito per usi critici di sicurezza.
Strumento SHA-256MD5 è estremamente veloce: le GPU moderne possono calcolare miliardi di hash al secondo e le rainbow table aggirano rapidamente le password comuni. Per l'archiviazione delle password usa bcrypt, scrypt o Argon2.
Generatore di PasswordAssolutamente NO per la sicurezza (firme digitali, password, TLS). Ma per usi non sicuri (controlli di corruzione file, deduplicazione, chiavi cache), MD5 va ancora bene perché gli attaccanti non hanno incentivi a creare collisioni.
MD5 è unidirezionale e non può essere invertito matematicamente, ma rainbow table e forza bruta possono recuperare password deboli in pochi secondi. Questo è il motivo per cui MD5 non deve mai essere usato per archiviare password.
No. Lo strumento utilizza la lettura incrementale frammentata: i file non vengono caricati completamente in memoria, quindi anche file di più GB vengono elaborati senza problemi con un'interfaccia reattiva.
HMAC-MD5 è un hash con chiave che richiede una chiave segreta. Sebbene MD5 semplice sia compromesso, HMAC-MD5 è ancora sicuro quando la chiave è sconosciuta (sebbene la migrazione a HMAC-SHA256 sia consigliata).
Generatore HMACMD5 (Message-Digest Algorithm 5) è una funzione hash a 128 bit progettata da Ronald Rivest nel 1991 (RFC 1321), che produce un digest esadecimale fisso di 32 caratteri da input arbitrario. Ampiamente usato per firme digitali, verifica di certificati e archiviazione di password, MD5 è stato compromesso dall'attacco di collisione di Wang et al. nel 2004, e il malware Flame ha sfruttato le collisioni MD5 per falsificare un certificato CA fidato nel 2008.
**Stato di sicurezza**: NIST ha deprecato ufficialmente MD5 per le firme digitali in SP 800-131A (2011). Tuttavia, MD5 rimane utile per scenari non di sicurezza: controlli di integrità dei file contro la corruzione accidentale, deduplicazione dei dati e chiavi di cache. La domanda chiave: un attaccante trarrebbe vantaggio dal creare una collisione? Se no, la velocità di MD5 è un vantaggio.
**Non usare mai MD5 per archiviare password**: MD5 è estremamente veloce (miliardi di hash/secondo su GPU), consentendo attacchi di forza bruta istantanei sulle password comuni. L'archiviazione delle password DEVE usare bcrypt, scrypt o Argon2 — hash lenti con fattori di costo configurabili che rendono la forza bruta impossibile.
**HMAC-MD5 è ancora sicuro**: sebbene MD5 semplice sia compromesso, HMAC-MD5 (codice di autenticazione di messaggio hash con chiave) rimane sicuro quando la chiave è sconosciuta perché la costruzione HMAC non dipende direttamente dalla resistenza alle collisioni dell'hash. La migrazione a HMAC-SHA256 è comunque consigliata.
Lo strumento utilizza un'implementazione MD5 in JavaScript puro (l'API Web Crypto non supporta più MD5). Tutti i calcoli avvengono localmente nel tuo browser: i file utilizzano la lettura incrementale frammentata e non vengono mai caricati sui server.
| Algoritmo | Bit di output | Lunghezza Hex | Sicurezza | Velocità | Uso consigliato |
|---|---|---|---|---|---|
MD5 | 128 bit | 32 caratteri | ❌ Compromesso (collisioni/preimmagine) | Estrema | Checksum file, deduplicazione, chiavi cache |
SHA-1 | 160 bit | 40 caratteri | ❌ Collisioni (2017) | Veloce | Git, compatibilità legacy |
SHA-256 | 256 bit | 64 caratteri | ✅ Sicuro | Media | Firme digitali, certificati, blockchain |
SHA-512 | 512 bit | 128 caratteri | ✅ Sicuro | Veloce (64 bit) | Scenari alta sicurezza, derivazione chiavi |
bcrypt | - | 60 caratteri | ✅ Specializzato password | Lento (configurabile) | Archiviazione password |
| Anno | Evento | Impatto |
|---|---|---|
1991 | Ron Rivest progetta MD5 (RFC 1321) | Sostituisce MD4 e diventa l'algoritmo di hash principale |
1996 | Scoperto il primo difetto di pseudo-collisione in MD5 | La comunità accademica solleva preoccupazioni |
2004 | Il team di Wang Xiaoyun dimostra l'attacco di collisione MD5 | Le firme digitali MD5 completamente compromesse |
2008 | Il malware Flame falsifica certificati CA tramite collisione MD5 | NIST deprecica ufficialmente MD5 per le firme |
2011 | NIST SP 800-131A vieta ufficialmente MD5 per usi di sicurezza | I sistemi governativi statunitensi eliminano gradualmente MD5 |
2024 | Pubblicato nuovo articolo su attacco di preimmagine | L'ultima linea di difesa di MD5 è violata |
// Note: Web Crypto API does NOT support MD5 (deprecated)
// Use SHA-256 instead for new projects
async function sha256(message) {
const msgBuffer = new TextEncoder().encode(message);
const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);
return Array.from(new Uint8Array(hashBuffer)).map(b => b.toString(16).padStart(2,'0')).join('');
}
sha256('Hello World').then(console.log);
// MD5 in Node.js using crypto module
const crypto = require('crypto');
const md5 = crypto.createHash('md5').update('Hello World').digest('hex');
console.log(md5); // b10a8db164e0754105b7a99be72e3fe5import hashlib
text = 'Hello World'
md5_hash = hashlib.md5(text.encode('utf-8')).hexdigest()
print(md5_hash) # b10a8db164e0754105b7a99be72e3fe5
# File MD5 (chunked for large files)
def md5_file(filepath, chunk_size=8192):
md5 = hashlib.md5()
with open(filepath, 'rb') as f:
while chunk := f.read(chunk_size):
md5.update(chunk)
return md5.hexdigest()
# HMAC-MD5
import hmac
hmac_md5 = hmac.new(b'secret-key', b'Hello World', hashlib.md5).hexdigest()
print(hmac_md5)import java.security.MessageDigest;
import java.nio.charset.StandardCharsets;
public class MD5Example {
public static String md5(String input) throws Exception {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] hash = md.digest(input.getBytes(StandardCharsets.UTF_8));
StringBuilder sb = new StringBuilder();
for (byte b : hash) sb.append(String.format("%02x", b));
return sb.toString();
}
public static void main(String[] args) throws Exception {
System.out.println(md5("Hello World"));
// b10a8db164e0754105b7a99be72e3fe5
}
}
// Note: Use SHA-256 for new code: MessageDigest.getInstance("SHA-256")