Hash MD5
Herramienta gratuita de hash MD5 en línea. Modos texto/archivo/por lotes/HMAC-MD5, UTF-8/Latin1, mayúsculas, agrupación de 8 caracteres. ⚠️ MD5 está roto — NO lo use para almacenar contraseñas.
Herramienta gratuita de hash MD5 en línea. Modos texto/archivo/por lotes/HMAC-MD5, UTF-8/Latin1, mayúsculas, agrupación de 8 caracteres. ⚠️ MD5 está roto — NO lo use para almacenar contraseñas.
MD5 se usa comúnmente para verificación de integridad de archivos (como verificar descargas), generación rápida de resúmenes, compatibilidad con sistemas heredados, claves de caché y deduplicación de datos en escenarios no relacionados con la seguridad. MD5 produce 128 bits (32 caracteres hexadecimales) y es muy rápido, adecuado para escenarios de verificación con bajos requisitos de seguridad.
MD5 produce 128 bits (32 hex) y es muy rápido pero está roto; SHA-256 produce 256 bits (64 hex), es más lento pero no tiene ataques de colisión prácticos y es la opción preferida para usos críticos de seguridad.
Herramienta SHA-256MD5 es extremadamente rápido: las GPU modernas pueden calcular miles de millones de hashes por segundo, y las tablas arcoíris descifran rápidamente contraseñas comunes. Para almacenamiento de contraseñas use bcrypt, scrypt o Argon2.
Generador de contraseñasAbsolutamente NO para seguridad (firmas digitales, contraseñas, TLS). Pero para usos no relacionados con la seguridad (comprobación de corrupción de archivos, deduplicación, claves de caché), MD5 sigue estando bien porque los atacantes no tienen incentivos para crear colisiones.
MD5 es unidireccional y no se puede revertir matemáticamente, pero las tablas arcoíris y la fuerza bruta pueden recuperar contraseñas débiles en segundos. Esta es la razón por la que MD5 nunca debe usarse para almacenar contraseñas.
No. La herramienta usa lectura incremental fragmentada: los archivos no se cargan completamente en memoria, por lo que incluso archivos de varios GB se procesan sin problemas con una interfaz receptiva.
HMAC-MD5 es un hash con clave que requiere una clave secreta. Aunque el MD5 simple está roto, HMAC-MD5 sigue siendo seguro cuando la clave es desconocida (aunque se recomienda migrar a HMAC-SHA256).
Generador HMACMD5 (Message-Digest Algorithm 5) es una función hash de 128 bits diseñada por Ronald Rivest en 1991 (RFC 1321), que produce un resumen hexadecimal fijo de 32 caracteres a partir de una entrada arbitraria. Ampliamente utilizado para firmas digitales, verificación de certificados y almacenamiento de contraseñas, MD5 fue roto por el ataque de colisión de Wang et al. en 2004, y el malware Flame explotó colisiones MD5 para falsificar un certificado CA de confianza en 2008.
**Estado de seguridad**: NIST desaprobó formalmente MD5 para firmas digitales en SP 800-131A (2011). Sin embargo, MD5 sigue siendo útil para escenarios no relacionados con la seguridad: comprobaciones de integridad de archivos contra corrupción accidental, deduplicación de datos y claves de caché. La pregunta clave: ¿se beneficiaría un atacante de crear una colisión? Si no, la velocidad de MD5 es una ventaja.
**Nunca use MD5 para almacenamiento de contraseñas**: MD5 es extremadamente rápido (miles de millones de hashes/segundo en GPU), lo que permite fuerza bruta instantánea en contraseñas comunes. El almacenamiento de contraseñas DEBE usar bcrypt, scrypt o Argon2 — hashes lentos con factores de costo configurables que hacen que la fuerza bruta sea inviable.
**HMAC-MD5 sigue siendo seguro**: aunque el MD5 simple está roto, HMAC-MD5 (código de autenticación de mensajes hash con clave) sigue siendo seguro cuando la clave es desconocida porque la construcción HMAC no depende directamente de la resistencia a colisiones del hash. Se recomienda migrar a HMAC-SHA256.
La herramienta utiliza una implementación MD5 en JavaScript puro (la API Web Crypto ya no admite MD5). Todo el cálculo ocurre localmente en su navegador: los archivos usan lectura incremental fragmentada y nunca se cargan en servidores.
| Algoritmo | Bits de salida | Longitud Hex | Seguridad | Velocidad | Uso recomendado |
|---|---|---|---|---|---|
MD5 | 128 bits | 32 caracteres | ❌ Roto (colisiones/preimagen) | Extrema | Sumas de comprobación de archivos, deduplicación, claves de caché |
SHA-1 | 160 bits | 40 caracteres | ❌ Colisiones (2017) | Rápido | Git, compatibilidad con sistemas heredados |
SHA-256 | 256 bits | 64 caracteres | ✅ Seguro | Medio | Firmas digitales, certificados, blockchain |
SHA-512 | 512 bits | 128 caracteres | ✅ Seguro | Rápido (64 bits) | Escenarios de alta seguridad, derivación de claves |
bcrypt | - | 60 caracteres | ✅ Especializado para contraseñas | Lento (configurable) | Almacenamiento de contraseñas |
| Año | Evento | Impacto |
|---|---|---|
1991 | Ron Rivest diseña MD5 (RFC 1321) | Reemplaza a MD4 y se convierte en el algoritmo hash principal |
1996 | Se descubre el primer defecto de pseudocolisión en MD5 | La comunidad académica comienza a cuestionar la seguridad de MD5 |
2004 | El equipo de Wang Xiaoyun demuestra el ataque de colisión MD5 | La seguridad de las firmas digitales MD5 se rompe completamente |
2008 | El malware Flame falsifica certificados CA mediante colisión MD5 | NIST desaprueba oficialmente MD5 para firmas digitales |
2011 | NIST SP 800-131A prohíbe oficialmente MD5 para usos de seguridad | Los sistemas del gobierno de EE. UU. eliminan gradualmente MD5 |
2024 | Se publica un nuevo artículo sobre ataque de preimagen | La última línea de defensa de MD5 (resistencia a preimagen) se rompe |
// 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")