
Generador de hash y HMAC: MD5, SHA-256 y SHA-512 en línea
Calcula una huella MD5 o SHA, o firma un mensaje con HMAC, en el navegador. Hex, Base64 o Base64URL — checksums de texto y firmas webhook, 100 % local.
Un digest prueba los bytes; HMAC prueba quién los envió
Un hash y un HMAC responden a preguntas distintas. El SHA-256 de una cadena indica si esa cadena sigue coincidiendo con una huella publicada. El HMAC-SHA-256 de la misma cadena, calculado con un secreto compartido, indica si lo produjo alguien que conoce el secreto. Ninguno de los dos es un cifrado ni un almacén de contraseñas. FastMinify separa ambas tareas. El generador de hash en línea calcula MD5, SHA-1, SHA-256, SHA-384 y SHA-512 a partir de texto UTF-8, y el generador HMAC firma un mensaje con HMAC-SHA-256, SHA-384 o SHA-512. Los dos funcionan en la pestaña del navegador con Web Crypto (MD5 es una implementación local, porque Web Crypto no lo ofrece) y no se sube nada. Ambos aparecen en el hub de herramientas de codificación, junto a Base64 y las herramientas JWT. La codificación escribe los bytes de otra forma, y el hash calcula su huella.
Cuándo el navegador es el sitio correcto para hashear
Una cadena que puedes pegar, un secreto que aceptas teclear en tu propio navegador, un digest que ya tienes.
Si los bytes son un artefacto binario, o el secreto no debe aparecer en un navegador de una máquina compartida, quédate en la shell o en CI.
Errores de hash que parecen una coincidencia
Un digest simple es rápido, no lleva sal y es idéntico para la misma entrada. Eso sirve para un checksum, pero no para una contraseña: un atacante puede calcular el digest de antemano, y dos usuarios con la misma contraseña comparten el mismo valor. La documentación de las páginas de hash y HMAC lo recoge. Las contraseñas van con bcrypt-hash (o con Argon2 en tu servidor). HMAC tampoco sirve, porque garantiza la autenticidad de un mensaje con un secreto que debes guardar y no estira una contraseña.
Cualquiera puede recalcular el SHA-256 de un cuerpo público. El digest prueba que el cuerpo no cambió, pero no quién lo produjo. Si un webhook, una nota de versión o una llamada de API debe ser auténtica, hace falta un secreto: HMAC o una firma JWT comprobada con jwt-verify. La confusión inversa es igual de habitual tras la guía de codificar y decodificar Base64, porque Base64 es un envoltorio reversible. El SHA-256 de abc es ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad. De ese hex no se vuelve a abc.
El generador de hash calcula el hash de texto UTF-8, no de un archivo en bruto. El selector de archivos solo acepta extensiones de texto (txt, md, json, csv, html, xml, yml, yaml), hasta el límite de 32 MiB del navegador, y el archivo se lee como texto antes de calcular el hash. El SHA-256 que publica un proveedor para un .tar.gz, una imagen o un PDF no coincidirá, y esos tipos no están en el selector. Incluso un archivo de texto puede diferir de sha256sum si cambian los saltos de línea. El SHA-256 de abc es el vector de arriba. El de abc más un solo LF es edeaaff3f1774ad2888673770c6d64097e391bc362d7d6fb34982ddf0efd18cb. Las mismas letras, bytes distintos.
echo abc | sha256sum (el comando echo añade un salto de línea) y culpar al navegadorsha256sum u openssl dgst.El X-Hub-Signature-256 de GitHub es sha256= más el HMAC-SHA-256 del cuerpo en bruto, secreto en UTF-8. Stripe firma timestamp.payload, no el JSON solo. La página HMAC no construye esas cadenas ni quita un prefijo sha256=. Pega el mensaje exacto, los bytes exactos de la clave y solo el digest. La comparación ignora mayúsculas hex y espacios, y el = final en Base64URL. No ignora un prefijo.
sha256=f7bc… en Digest esperadoQué algoritmo, qué escritura, qué herramienta
Todos emiten cadenas opacas. No se sustituyen.
Los bytes del digest no cambian. La escritura sí. Hex es lo que imprimen sha256sum y la mayoría de las documentaciones de webhooks. Base64 con padding es lo que devuelven algunas API. Base64URL sin padding es la forma compacta (sin +, / ni = final). Las mayúsculas solo aplican al hex.
Un digest truncado es una copia fallida, no otro algoritmo. Cuenta los caracteres después de quitar los espacios.
Calcular un digest y luego firmar un mensaje
Abre el generador de hash. Pega el texto o selecciona un archivo de texto. Elige hex, Base64 o Base64URL. Activa Hex en mayúsculas solo si el digest de referencia está escrito en mayúsculas, porque la opción no cambia nada en Base64. Los cinco algoritmos se actualizan a la vez. Pega el digest esperado para resaltar las coincidencias, o carga el ejemplo si solo quieres ver cómo funciona. El campo debe contener algo más que espacios: un campo vacío borra las tarjetas en lugar de mostrar el conocido SHA-256 de la cadena vacía.
1. Pegar los bytes exactos como texto
Acuerda los saltos de línea. Un LF final forma parte de la entrada. No cambies la sangría del JSON si el otro lado calculó el hash de la forma compacta.
2. Igualar la escritura de salida
Hex para checksums y herramientas CLI. Base64 con padding cuando la API muestra + / y =. Base64URL sin padding cuando el digest va en un token o una URL.
3. Pegar el digest esperado
La comparación ignora mayúsculas hex y espacios, y el padding Base64URL. Una coincidencia resalta el algoritmo. Ningún resalte: bytes distintos, escritura distinta, o un prefijo que aún hay que quitar.
Abre el generador HMAC. No hay selección de archivos, así que pega el mensaje y el secreto. Deja SHA-256 salvo que el proveedor indique SHA-384 o SHA-512. Pon la codificación de la clave en UTF-8 para un secreto tipo passphrase, en hex para una clave hex (prefijo 0x opcional, longitud par) o en Base64 o Base64URL si la clave se guardó así. UTF-8 sobre un secreto hex firma los caracteres 0-9a-f y no los bytes de la clave, así que el digest no coincide y la causa no es obvia. El digest esperado usa las mismas reglas de comparación que la página de hash.
Los mismos bytes en Node y openssl
createHash y createHmac calculan el hash de la cadena que pasas. No añaden un salto de línea. Eso coincide con las herramientas del navegador.
Ejemplo básico
echo añade un salto de línea, así que el digest es de otros bytes. printf no. Para un archivo en disco, pasa -binary solo si quieres los bytes crudos del digest; hex es la forma de texto.
Ejemplo básico
Sin instalación, sin enviar nada a un servidor, cinco algoritmos de hash o tres de HMAC, hex / Base64 / Base64URL y un resalte del digest esperado. Los límites: solo texto y UTF-8, tope de 32 MiB para archivos de texto en la página de hash, sin checksum binario, sin HMAC-MD5, sin estiramiento de contraseñas, sin ensamblado de JWT. Usa las páginas para inspeccionar un fragmento o reproducir una firma de webhook. Deja openssl para el artefacto de versión y bcrypt para la contraseña.
Conclusión
Calcula el hash del texto cuando necesites saber que no cambió. Usa HMAC cuando un secreto compartido deba probar quién lo produjo. FastMinify hace ambas cosas en el navegador. Admite de MD5 a SHA-512 para texto UTF-8 (y archivos de texto de hasta 32 MiB), y HMAC-SHA-256, SHA-384 o SHA-512 con una clave UTF-8, hex o Base64, escrita como hex, Base64 o Base64URL sin padding. No calculará el checksum de un archivo comprimido, no guardará una contraseña ni verificará un JWT. Eso se queda en openssl, bcrypt y jwt-verify. Empieza en el hub de herramientas de codificación mientras la cadena siga siendo texto.
Hashear o firmar en el navegador
Artículos relacionados

Pega un token y un JWKS para comprobar una firma RS256, ES256 o HS256 en el navegador. Elección de la clave por kid, errores medidos y claims que revisar.

HTTP/2 y HTTP/3 cambian el trayecto de los archivos, no su peso. Mediciones de tamaño, compilación y bundling muestran lo que la minificación aún aporta.

Convierte un epoch Unix en una fecha legible y al revés, distingue segundos de milisegundos y evita las trampas de zona horaria, JWT y cambio de hora.