Hash y Seguridad

Generador de Hash FNV

Calcula hashes FNV-1 o FNV-1a en 32 o 64 bits a partir de cualquier texto.

Valora esta herramienta

Cómo usar Generador de Hash FNV

  1. Escribe o pega tu texto en el cuadro.
  2. Elige la variante: FNV-1a es la que normalmente se recomienda.
  3. El hash aparece mientras escribes; haz clic en Copiar para obtenerlo.

Acerca de Generador de Hash FNV

FNV — Fowler–Noll–Vo, llamado así por Glenn Fowler, Landon Curt Noll y Phong Vo — es uno de los grandes algoritmos pequeños. Todo el proceso consiste en recorrer los bytes realizando únicamente una multiplicación por un número primo fijo y una operación XOR. No hay tablas, ni rondas, ni búferes; cabe en unas pocas líneas de cualquier lenguaje, funciona en cualquier parte y es tan rápido que nadie se molesta en perfilarlo. Por eso aparece dentro de tablas hash, tablas de símbolos, cachés e intérpretes por todas partes.

Las dos variantes parecen casi idénticas y la diferencia es fácil de pasar por alto. FNV-1a se diferencia de FNV-1 únicamente en el orden del XOR y la multiplicación — ese es todo el cambio. Resulta que esto importa: hacer primero el XOR ofrece una distribución notablemente mejor, sobre todo en entradas cortas y en entradas que solo difieren en su último byte, exactamente la situación que enfrenta una tabla hash cuando las claves tienen el aspecto de user_1, user_2, user_3. Por eso FNV-1a suele ser la variante recomendada, y por eso es la que viene por defecto aquí. Elige FNV-1 solo si necesitas coincidir con un sistema existente que ya lo utilice.

El tamaño es la otra decisión. Las variantes de 32 bits dan 8 caracteres hexadecimales; las de 64 bits dan 16. Más ancho no significa «más seguro»; simplemente implica menos colisiones accidentales cuando hasheas muchas claves, por lo que vale la pena usar 64 bits cuando el número de claves llega a los millones. Ninguna variante de FNV es criptográfica. Están diseñadas para la velocidad y la dispersión, no resisten nada, y crear dos cadenas con el mismo hash FNV es sencillo. Úsalas para búsquedas y agrupación (bucketing); usa SHA-256 cuando el resultado deba resistir a alguien que quiera que no coincida.

Preguntas frecuentes

¿Cuál es la diferencia entre FNV-1 y FNV-1a?

Solo el orden de dos operaciones: FNV-1 multiplica y luego aplica XOR, FNV-1a aplica XOR y luego multiplica. Ese único cambio le da a FNV-1a una mejor distribución, por lo que suele ser la variante recomendada.

¿Debo usar la variante de 32 o de 64 bits?

32 bits (8 caracteres hexadecimales) es suficiente para tablas hash comunes. Pasa a 64 bits (16 caracteres hexadecimales) cuando hasheas millones de claves y quieres que las colisiones accidentales sigan siendo poco frecuentes.

¿Es seguro FNV?

No. FNV es un hash no criptográfico creado para la velocidad. Nunca debe usarse para contraseñas, firmas o integridad frente a un atacante: las colisiones pueden generarse deliberadamente con poco esfuerzo.

¿Para qué sirve realmente FNV?

Tablas hash, diccionarios, tablas de símbolos, claves de caché, sharding y agrupación: cualquier lugar donde necesites un número rápido y bien distribuido a partir de una cadena y nadie intente engañarte.

¿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 FNV. Se hashea y se descarta de inmediato: nunca se registra ni se almacena.