
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 preguntas distintas. El SHA-256 de una cadena dice si esa cadena sigue coincidiendo con una huella publicada. El HMAC-SHA-256 de la misma cadena, más un secreto compartido, dice si alguien que conoce el secreto la produjo. Ninguno de los dos es cifrado, ni un almacén de contraseñas. FastMinify separa los trabajos: 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. Ambos corren en la pestaña vía Web Crypto (MD5 es una implementación local, porque Web Crypto no lo ofrece). No se sube nada. Los dos están en el hub de herramientas de codificación, junto a Base64 y las ayudas JWT — la codificación escribe bytes, el hash los 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, sin sal, e idéntico para la misma entrada. Eso es lo que quieres en un checksum. No es lo que quieres en una contraseña: un atacante precalcula el digest, y dos usuarios con la misma contraseña comparten una fila. La documentación de las páginas de hash y HMAC lo dice. Las contraseñas van en bcrypt-hash (o Argon2 en tu servidor). HMAC tampoco sirve: autentica un mensaje con un secreto que debes guardar, no estira una contraseña.
Cualquiera puede recalcular el SHA-256 de un cuerpo público. El digest prueba que el cuerpo no cambió; no prueba 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: Base64 es un envoltorio reversible. El SHA-256 de abc es ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad. De ese hex no se vuelve a abc.
El generador de hash huella texto UTF-8, no un archivo en bruto. La subida acepta solo extensiones de texto — txt, md, json, csv, html, xml, yml, yaml — hasta el tope de cliente de 32 MiB, y el archivo se lee como texto antes de hashear. El SHA-256 de 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 discrepar de sha256sum si cambian los saltos de línea. El SHA-256 de abc es el vector de arriba. El SHA-256 de abc más un solo LF es edeaaff3f1774ad2888673770c6d64097e391bc362d7d6fb34982ddf0efd18cb. Las mismas letras, bytes distintos.
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.
Qué 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 docs 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 sube un archivo de texto. Elige hex, Base64 o Base64URL. Activa las mayúsculas solo si el digest de referencia está en versales — no cambia nada en Base64. Los cinco algoritmos se refrescan juntos. Pega el digest esperado para resaltar coincidencias. Carga el ejemplo si solo quieres ver el flujo. El campo debe contener texto que no sea solo espacios; un campo vacío borra las tarjetas en lugar de mostrar el SHA-256 conocido de la cadena vacía.
Paso 1 — Pegar los bytes exactos como texto
Acuerda los saltos de línea. Un LF final forma parte de la entrada. No reindentes el JSON si el otro lado hasheó la forma compacta.
Paso 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.
Paso 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 subida de archivo: pega el mensaje y el secreto. Deja SHA-256 salvo que el proveedor diga SHA-384 o SHA-512. Pon la codificación de clave en UTF-8 para un secreto tipo passphrase, hex para una clave hex (prefijo 0x opcional, longitud par), o Base64 si la clave se guardó así. UTF-8 sobre un secreto hex firma los caracteres 0-9a-f, no los bytes de la clave — el digest no coincide y el error no es obvio. El digest esperado usa las mismas reglas que la página de hash.
Los mismos bytes en Node y openssl
createHash y createHmac hashean 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 subida a un servidor, cinco algoritmos de hash o tres de HMAC, hex / Base64 / Base64URL, y un resalte del digest esperado. El límite: 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 en el artefacto de release y bcrypt en la contraseña.
Conclusión
Hashea el texto cuando necesitas saber que no cambió. Pásalo por HMAC cuando un secreto compartido debe probar quién lo produjo. FastMinify hace ambas cosas en el navegador: de MD5 a SHA-512 para texto UTF-8 (y archivos de texto de hasta 32 MiB), HMAC-SHA-256/384/512 con una clave UTF-8, hex o Base64, escrita como hex, Base64 o Base64URL sin padding. No hará el checksum de un archivo comprimido, no guardará una contraseña y no 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.
Artículos relacionados

Evita SSH y nginx para un side project Next.js. Compara Railway, Render, Vercel y un VPS, y despliega desde Git tras minificar los assets en el navegador.

Convierte texto, un archivo o una imagen a Base64 (y al revés) en el navegador — data URI, adjunto email, segmento JWT. 100 % local.

Compila un fragmento SCSS o LESS (variables, mixins) a CSS en el navegador, sin npm run build — útil para una PR, un snippet o un entorno sin Node.