Esta herramienta en línea permite generar el hash xxh64 de cualquier cadena de texto.
La longitud XXH64 es de 16 caracteres
Hash disponible
MD2 Hash, MD4 Hash, MD5 Hash, SHA1 Hash, SHA224 Hash, SHA256 Hash, SHA384 Hash, SHA512/224 Hash, SHA512/256 Hash, SHA512 Hash, SHA3-224 Hash, SHA3-256 Hash, SHA3-384 Hash, SHA3-512 Hash, RIPEMD128 Hash, RIPEMD160 Hash, RIPEMD256 Hash, RIPEMD320 Hash, WHIRLPOOL Hash, TIGER128,3 Hash, TIGER160,3 Hash, TIGER192,3 Hash, TIGER128,4 Hash, TIGER160,4 Hash, TIGER192,4 Hash, SNEFRU Hash, SNEFRU256 Hash, GOST Hash, GOST-CRYPTO Hash, ADLER32 Hash, CRC32 Hash, CRC32B Hash, CRC32C Hash, FNV132 Hash, FNV1A32 Hash, FNV164 Hash, FNV1A64 Hash, JOAAT Hash, MURMUR3A Hash, MURMUR3C Hash, MURMUR3F Hash, XXH32 Hash, XXH64 Hash, XXH3 Hash, XXH128 Hash, HAVAL128,3 Hash, HAVAL160,3 Hash, HAVAL192,3 Hash, HAVAL224,3 Hash, HAVAL256,3 Hash, HAVAL128,4 Hash, HAVAL160,4 Hash, HAVAL192,4 Hash, HAVAL224,4 Hash, HAVAL256,4 Hash, HAVAL128,5 Hash, HAVAL160,5 Hash, HAVAL192,5 Hash, HAVAL224,5 Hash, HAVAL256,5 Hash,
¿Qué es XXH64?
XXH64 es la variante de 64 bits de la familia xxHash, diseñada para proporcionar un hash no criptográfico de alta velocidad aprovechando al máximo las arquitecturas de CPU de 64 bits. Mientras que XXH32 está optimizado para registros de 32 bits, XXH64 amplía el estado interno y la lógica de mezcla para procesar bloques de datos más grandes por ciclo de reloj. Es la solución ideal para los sistemas modernos de 64 bits en los que el rendimiento es el principal requisito de rendimiento.
¿Cómo funciona el hash XXH64?
XXH64 alcanza su velocidad mediante una sofisticada canalización que minimiza las dependencias entre instrucciones:
- Inicialización: Inicializa cuatro acumuladores independientes de 64 bits con semillas primarias específicas para garantizar estados de hash distintos.
- Bucle principal: El algoritmo procesa la entrada en bloques de 32 bytes. Para cada bloque, realiza una serie de multiplicaciones por números primos grandes (
0x9E3779B1y0x85EBCA77), seguidas de rotaciones bit a bit. Al utilizar aritmética de 64 bits, se incluyen más datos en cada operación en comparación con la versión de 32 bits. - Paralelismo de flujos: Los cuatro acumuladores procesan diferentes partes del flujo de datos en paralelo, ocultando de forma efectiva la latencia de la memoria tras los cálculos del lado de la CPU.
- Finalización: Una vez finalizado el bucle, los cuatro acumuladores se fusionan mediante una secuencia de mezcla final para distribuir la entropía por todo el resultado de 64 bits, lo que garantiza una distribución hash de alta calidad.
Comparación: XXH64 frente a XXH32
La elección entre estas dos versiones depende estrictamente de la arquitectura del hardware y del tamaño de salida requerido:
- Optimización de hardware: XXH64 es significativamente más rápido que XXH32 en CPU de 64 bits, ya que procesa los datos en palabras de 8 bytes (64 bits) en lugar de palabras de 4 bytes (32 bits). El uso de XXH32 en una máquina de 64 bits ignora, en esencia, la mitad de la capacidad de ancho de registro de la CPU.
- Probabilidad de colisión de hash: XXH64 produce una salida de 64 bits, lo que ofrece un enorme espacio de claves de $2^{64}$. Esto lo hace sustancialmente más resistente a las colisiones que el XXH32 de 32 bits, lo que lo hace más seguro para conjuntos de datos muy grandes (por ejemplo, miles de millones de elementos en un mapa hash).
- Portabilidad frente a eficiencia: XXH32 sigue siendo relevante para sistemas embebidos de 32 bits o protocolos específicos que requieren estrictamente un identificador de 32 bits. Sin embargo, para cualquier entorno moderno de escritorio, servidor o nube, XXH64 es la opción estándar por su velocidad y entropía superiores.