Generador de hashes

Hashes MD5, SHA-1 y SHA-2, y HMAC de texto o archivos.

Acerca de esta herramienta

Calcula MD5, SHA-1, SHA-256, SHA-384 y SHA-512 de cualquier texto o archivo, o un HMAC con una clave secreta. Los archivos se leen localmente y nunca se suben, así que también sirve para comprobar los checksums de las descargas.

Cómo se usa

  1. Elige Texto o Archivo como entrada.
  2. Escribe texto o suelta un archivo. Los archivos se leen localmente y nunca se suben.
  3. Consulta MD5, SHA-1, SHA-256, SHA-384 y SHA-512 a la vez, en hexadecimal o Base64.
  4. Para mensajes firmados, activa HMAC e introduce la clave secreta.

Preguntas

¿Cómo verifico un archivo descargado?
Elige Archivo, suelta la descarga y compara el valor SHA-256 con el checksum que publica el proyecto. Si difiere aunque sea un carácter, el archivo no es el mismo.
¿Puedo usar MD5 o SHA-1 para contraseñas?
No. Son demasiado rápidos y tienen debilidades conocidas. Guarda las contraseñas con un hash de contraseñas lento como Argon2, bcrypt o scrypt.
¿Qué es un HMAC?
Un hash combinado con una clave secreta. Demuestra que un mensaje viene de alguien que conoce la clave y que no se ha modificado. Los webhooks de servicios como Stripe y GitHub se firman así.
¿Por qué mi hash no coincide con el de otra herramienta?
Normalmente por diferencias invisibles en la entrada: un salto de línea final, finales de línea de Windows o una codificación de texto distinta. Aquí, el texto siempre se procesa como UTF-8 exactamente tal como se escribió.
¿Se puede descifrar o revertir un hash?
No. Un hash no es cifrado y no hay ninguna clave para deshacerlo. Los sitios que ofrecen “descifrar MD5” buscan el valor en enormes tablas de hashes de cadenas comunes. Por eso mismo, los hashes sin sal de entradas cortas, como contraseñas o números de teléfono, no anonimizan los datos.
¿Cómo verifico la firma HMAC de un webhook?
Activa HMAC, introduce el secreto de firma y pega el cuerpo de la solicitud en bruto, exactamente como se recibió; después compara el valor hexadecimal HMAC-SHA256 con la cabecera de la firma. GitHub lo envía en X-Hub-Signature-256 tras un prefijo sha256=. Un JSON reformateado da un resultado distinto, y algunos proveedores también firman una marca de tiempo, así que consulta su documentación.
¿Cómo sé qué algoritmo ha generado un hash?
Fíjate en su longitud en hexadecimal. MD5 tiene 32 caracteres, SHA-1 tiene 40, SHA-256 tiene 64, SHA-384 tiene 96 y SHA-512 tiene 128. La longitud no demuestra el algoritmo, ya que otros hashes comparten estos tamaños, pero acota las opciones rápidamente. Calcula aquí el hash de una entrada conocida para confirmarlo.

¿Qué es una función hash?

Una función hash criptográfica convierte una entrada de cualquier tamaño en un digest de tamaño fijo. SHA-256 siempre produce 256 bits, que se muestran como 64 caracteres hexadecimales, tanto si calculas el hash de una palabra como el de un archivo de 4 GB. La misma entrada siempre da el mismo hash, y cambiar un solo bit cambia aproximadamente la mitad de la salida. No puedes invertir un hash para recuperar la entrada; solo puedes calcular el hash de posibles entradas y comparar los resultados.

Un buen hash también es resistente a colisiones: encontrar dos entradas con el mismo digest debería ser prácticamente imposible. MD5 y SHA-1 han perdido esa propiedad. En 2017 se publicó una colisión real de SHA-1 (SHAttered), y las colisiones de MD5 se consiguen en segundos con un portátil. Ambos siguen sirviendo para detectar corrupción accidental, pero usa SHA-256 o SHA-512 para firmas, comprobaciones de manipulación y cualquier otra cosa en la que pueda intervenir un atacante.

Cómo obtener el mismo hash SHA-256 en la línea de comandos

Para comparar con un valor de la terminal, calcula el hash exactamente de los mismos bytes. En Linux ejecuta sha256sum file.iso, en macOS shasum -a 256 file.iso y en Windows PowerShell Get-FileHash file.iso, que usa SHA-256 por defecto. Para MD5, los comandos son md5sum, md5 y Get-FileHash -Algorithm MD5. PowerShell muestra el hexadecimal en mayúsculas, así que activa Mayúsculas aquí cuando quieras que los dos valores se vean idénticos.

Con texto, recuerda que echo añade un salto de línea, así que echo hello | sha256sum calcula el hash de seis bytes, no de cinco. Usa printf hello | sha256sum o echo -n para que coincida con lo que has escrito aquí; el recuento de bytes encima del cuadro de texto confirma la entrada exacta. Algunos sistemas, como los atributos de Subresource Integrity, esperan el digest en Base64 en lugar de en hexadecimal. Cambia la codificación de salida para obtenerlo sin convertirlo a mano.

MD5 vs SHA-1 vs SHA-256 vs SHA-512: qué hash usar

Para proyectos nuevos, SHA-256 es la opción por defecto: rápido, compatible en todas partes y sin ataques prácticos conocidos. SHA-512 da un digest más largo y a menudo es más rápido que SHA-256 en CPU de 64 bits, lo que ayuda con archivos grandes. SHA-384 es un SHA-512 truncado con valores iniciales distintos, habitual en TLS y Subresource Integrity. Reserva MD5 y SHA-1 para sistemas heredados y checksums que no tienen que ver con la seguridad, como comprobar un archivo con un MD5 publicado hace tiempo.

Para autenticar un mensaje, como el payload de un webhook, usa un HMAC en lugar de calcular el hash del secreto junto con el mensaje. Un simple SHA-256 de secreto más mensaje es vulnerable a ataques de extensión de longitud, que es justo lo que HMAC se diseñó para evitar. Las contraseñas necesitan un algoritmo lento y con sal, como Argon2id o bcrypt, y no ninguno de estos. Para ID aleatorios o tokens secretos, usa el Generador de UUID o el Generador de contraseñas en lugar de un hash.

¿Algo no funciona o un resultado parece incorrecto? Informar de un problema con esta herramienta