Hash MD5
Eina de hash MD5 en línia gratuïta. Modes text/fitxer/massiu/HMAC-MD5, UTF-8/Latin1, majúscules, agrupació de 8 caràcters. ⚠️ MD5 està compromès — NO l'utilitzeu per a emmagatzematge de contrasenyes.
Eina de hash MD5 en línia gratuïta. Modes text/fitxer/massiu/HMAC-MD5, UTF-8/Latin1, majúscules, agrupació de 8 caràcters. ⚠️ MD5 està compromès — NO l'utilitzeu per a emmagatzematge de contrasenyes.
MD5 s'utilitza normalment per a la comprovació d'integritat de fitxers (per exemple, verificació de descàrregues), generació ràpida de resums, compatibilitat amb sistemes antics, claus de memòria cau i desduplicació de dades en escenaris no relacionats amb la seguretat. MD5 produeix 128 bits (32 caràcters hexadecimals) i és extremadament ràpid, adequat per a escenaris de verificació no crítics.
MD5 produeix 128 bits (32 hex), extremadament ràpid però compromès; SHA-256 produeix 256 bits (64 hex), més lent però sense atacs de col·lisió pràctics i preferit per a aplicacions crítiques.
Eina SHA-256MD5 és extremadament ràpid — les GPU modernes poden calcular milers de milions de hashes per segon, i les taules de l'arc de Sant Martí trenquen les contrasenyes comunes a l'instant. Utilitza bcrypt, scrypt o Argon2 per a l'emmagatzematge de contrasenyes.
Generador de ContrasenyesAbsolutament NO per a seguretat (signatures digitals, contrasenyes, TLS). Però per a aplicacions no relacionades amb la seguretat (comprovació de corrupció de fitxers, desduplicació, claus de memòria cau) MD5 encara és adequat, ja que els atacants no tenen incentius per crear col·lisions.
MD5 és una funció unidireccional i matemàticament no es pot invertir, però les taules de l'arc de Sant Martí i la força bruta poden recuperar contrasenyes febles en qüestió de segons. Per això MD5 no s'ha d'utilitzar mai per a l'emmagatzematge de contrasenyes.
No. L'eina utilitza lectura incremental per fragments — els fitxers no es carreguen completament a la memòria, de manera que fins i tot fitxers de multi-gigabytes es processen sense problemes amb una interfície responsiva.
HMAC-MD5 és un hash amb clau que requereix una clau secreta. Tot i que MD5 simple està compromès, HMAC-MD5 roman segur quan la clau no es coneix (tot i que es recomana la migració a HMAC-SHA256).
Generador HMACMD5 (Message-Digest Algorithm 5) és una funció de hash de 128 bits dissenyada per Ronald Rivest el 1991 (RFC 1321), que produeix un resum hexadecimal fix de 32 caràcters a partir d'una entrada arbitrària. Antany àmpliament utilitzat per a signatures digitals, verificació de certificats i emmagatzematge de contrasenyes, MD5 va ser compromès per l'atac de col·lisió de Wang et al. el 2004, i el programari maliciós Flame va abusar de les col·lisions MD5 per falsificar un certificat CA de confiança el 2008.
**Estat de Seguretat**: El NIST va rebutjar oficialment MD5 per a signatures digitals a SP 800-131A (2011). Tanmateix, MD5 roman útil per a escenaris no relacionats amb la seguretat: comprovació d'integritat de fitxers contra corrupció aleatòria, desduplicació de dades i claus de memòria cau. La pregunta clau és: un atacant es beneficiaria de crear una col·lisió? Si no, la velocitat de MD5 és un avantatge.
**MAI utilitzeu MD5 per a emmagatzematge de contrasenyes**: MD5 és extremadament ràpid (milers de milions de hashes/segon en GPU), cosa que permet trencar contrasenyes comunes a l'instant mitjançant força bruta. L'emmagatzematge de contrasenyes HA d'utilitzar bcrypt, scrypt o Argon2 — hashes lents amb factors de cost ajustables que fan que la força bruta sigui inviable.
**HMAC-MD5 encara és segur**: tot i que MD5 simple està compromès, HMAC-MD5 (Codi d'Autenticació de Missatges basat en Hash amb clau) roman segur quan la clau no es coneix, perquè la construcció HMAC no depèn directament de la resistència a col·lisions del hash subjacent. No obstant això, es recomana la migració a HMAC-SHA256.
L'eina utilitza una implementació de MD5 en JavaScript pur (l'API Web Crypto ja no admet MD5). Tots els càlculs es realitzen localment al vostre navegador — els fitxers utilitzen lectura incremental per fragments i mai es carreguen als servidors.
| Algorisme | Bits de Sortida | Longitud Hex | Seguretat | Velocitat | Ús Recomanat |
|---|---|---|---|---|---|
MD5 | 128 bits | 32 caràcters | ❌ Compromès (col·lisions/preimatge) | Extremadament ràpid | Checksums de fitxers, desduplicació, claus de memòria cau |
SHA-1 | 160 bits | 40 caràcters | ❌ Col·lisions (2017) | Ràpid | Git, compatibilitat amb sistemes antics |
SHA-256 | 256 bits | 64 caràcters | ✅ Segur | Mitjana | Signatures digitals, certificats, blockchain |
SHA-512 | 512 bits | 128 caràcters | ✅ Segur | Ràpid (64-bit) | Escenaris d'alta seguretat, derivació de claus |
bcrypt | - | 60 caràcters | ✅ Específic per a contrasenyes | Lent (ajustable) | Emmagatzematge de contrasenyes |
| Any | Esdeveniment | Impacte |
|---|---|---|
1991 | Ron Rivest dissenya MD5 (RFC 1321) | Substitueix MD4 i es converteix en l'algorisme de hash estàndard |
1996 | Es descobreix el primer defecte de pseudo-col·lisió en MD5 | La comunitat acadèmica expressa preocupació |
2004 | L'equip de Wang Xiaoyun demostra un atac de col·lisió MD5 | La seguretat de les signatures digitals MD5 es trenca completament |
2008 | El programari maliciós Flame falsifica un certificat CA mitjançant col·lisió MD5 | El NIST rebutja oficialment MD5 per a signatures digitals |
2011 | NIST SP 800-131A prohibeix oficialment MD5 per a finalitats de seguretat | Els sistemes governamentals dels EUA eliminen MD5 gradualment |
2024 | Es publica un nou article d'atac de preimatge | L'última línia de defensa de MD5 (resistència a preimatge) es trenca |
// 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")