Hash y Seguridad

Generador de MurmurHash

Calcula hashes MurmurHash3 en 32 o 128 bits a partir de cualquier texto.

Valora esta herramienta

Cómo usar Generador de MurmurHash

  1. Escribe o pega tu texto en el cuadro.
  2. Elige la variante: 32 bits es adecuado para la mayoría de las tablas hash.
  3. El hash aparece mientras escribes; haz clic en Copiar para obtenerlo.

Acerca de Generador de MurmurHash

MurmurHash3 fue creado por Austin Appleby y se convirtió en la respuesta por defecto a «¿con qué debería hashear mis claves?» para toda una generación de código de infraestructura. El nombre proviene de su bucle interno — multiplicar, rotar, multiplicar, rotar — un puñado de instrucciones de CPU baratas repetidas sobre bloques de la entrada, seguidas de un paso de finalización que provoca una avalancha de bits. No es una suma de verificación ni un hash criptográfico: es un hash de distribución, creado para convertir claves en números que se dispersen de manera uniforme entre buckets, por lo que es tan común en tablas hash y filtros de Bloom.

Los nombres de las variantes necesitan explicación, porque dos de ellas parecen intercambiables y no lo son. murmur3a es la versión de 32 bits y da 8 caracteres hexadecimales. murmur3c y murmur3f son ambas de 128 bits y ambas dan 32 caracteres hexadecimales, pero son algoritmos distintos — uno optimizado para CPUs x86 de 32 bits, otro para x64 de 64 bits — y producen una salida completamente diferente para la misma entrada. No son dos implementaciones de un mismo hash; elegir la «incorrecta» no coincidirá con el otro sistema con el que intentas comunicarte. Si estás comparando hashes con otra herramienta o biblioteca, debes usar exactamente la misma variante que ella utilizó.

Elige 32 bits salvo que tengas una razón para no hacerlo: es la más rápida y 8 caracteres son más que suficientes para la agrupación habitual. Sube a una variante de 128 bits cuando estés hasheando conjuntos de claves muy grandes y quieras que las colisiones accidentales sean prácticamente inexistentes, o cuando necesites un identificador compacto para deduplicación. Ninguna de ellas es segura frente a un atacante — las colisiones de MurmurHash3 pueden producirse deliberadamente, y los ataques de inundación de hash (hash-flooding) contra servicios que lo usaron sin protección son un problema real y documentado. Para cualquier cosa adversarial, recurre a SHA-256; incluso MD5 está en una categoría de dificultad distinta.

Preguntas frecuentes

¿Cuál es la diferencia entre murmur3c y murmur3f?

Ambas son de 128 bits y ambas producen 32 caracteres hexadecimales, pero son algoritmos diferentes: murmur3c está optimizado para x86 y murmur3f para x64. La misma entrada da resultados distintos, así que debes elegir exactamente la variante que use el otro sistema.

¿Qué variante debería elegir?

MurmurHash3 de 32 bits para el trabajo habitual de tablas hash y agrupación. Usa una variante de 128 bits cuando tengas conjuntos de claves enormes o quieras un ID compacto donde las colisiones accidentales deban ser extremadamente raras.

¿Es seguro MurmurHash?

No. Es un hash de distribución rápido sin resistencia a ataques: las colisiones pueden crearse a propósito, algo que se ha usado en ataques de denegación de servicio por inundación de hash. Nunca lo uses para contraseñas, firmas o detección de manipulaciones.

¿Para qué sirve MurmurHash?

Tablas hash, filtros de Bloom, sharding, particionado y claves de caché: cualquier lugar donde necesites que las claves se distribuyan de forma rápida y uniforme y nadie intente manipular el resultado.

¿Se envía mi texto a algún sitio?

Tu texto se envía a nuestro servidor para calcular el hash, porque los navegadores no pueden calcular MurmurHash. Se hashea y se descarta de inmediato: nunca se registra ni se almacena.