Questo strumento online ti consente di generare l'Hash xxh128 di qualsiasi stringa.
XXH128 è lungo 32 caratteri
Algoritmi hash disponibili
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,
Che cos'è XXH128?
XXH128 è la variante a 128 bit dell'algoritmo XXH3. Mentre XXH3 può fornire output a 64 o 128 bit, XXH128 è specificamente l'implementazione che genera un digest completo a 128 bit. È progettato per applicazioni in cui la probabilità di collisioni deve essere matematicamente trascurabile, anche quando si esegue l'hash di trilioni di elementi. Come XXH3, è costruito per le CPU moderne, utilizzando istruzioni vettorializzate per raggiungere velocità che lo rendono una delle funzioni hash a 128 bit più veloci esistenti.
Come funziona l'hash XXH128?
XXH128 si basa sul nucleo XXH3, estendendo la fase di miscelazione "avalanche" per gestire il doppio della dimensione dello stato:
- Espansione dello stato: Utilizza due stati interni paralleli, ciascuno di 64 bit, che vengono elaborati simultaneamente utilizzando istruzioni SIMD.
- Mixing esteso: L'algoritmo elabora i dati in blocchi più grandi rispetto a XXH64, assicurando che l'input venga "distribuito" sull'intero stato a 128 bit.
- Chiave segreta: incorpora una "chiave segreta" (un blocco di dati pseudo-casuale) durante la fase di miscelazione. Ciò rende l'output dell'hash dipendente non solo dall'input, ma anche dalla costante interna, il che migliora significativamente la qualità della distribuzione e la resistenza ai tentativi di collisione malevoli.
- Finalizzazione (Avalanche a 128 bit): La fase di finalizzazione esegue un'intensa miscelazione bit per bit dei due accumulatori a 64 bit per produrre un'impronta digitale a 128 bit altamente uniforme.
Confronto: XXH128 vs. XXH3 e XXH64
- XXH128 vs. XXH64:
- Resistenza alle collisioni: XXH128 è di gran lunga superiore. Con un output a 128 bit, la soglia di collisione del paradosso del compleanno è esponenzialmente più alta rispetto a quella di un hash a 64 bit (XXH64). Se la vostra applicazione gestisce set di dati di grandi dimensioni (ad esempio, l'indicizzazione di big data), XXH128 è la scelta più sicura.
Prestazioni: XXH128 è solo marginalmente più lento di XXH64, nonostante fornisca il doppio dei bit, grazie all'efficienza dell'implementazione vettorializzata (SIMD).
XXH128 vs. XXH3 (modalità a 64 bit):
- Uso principale: XXH3 (in modalità a 64 bit) è destinato a tabelle hash "velocità a tutti i costi" in cui le collisioni sono gestite dalla struttura dei dati. XXH128 è destinato ad applicazioni "focalizzate sull'integrità" (come la deduplicazione dei file o la verifica di grandi blocchi di dati) in cui è necessario un identificatore univoco e resistente alle collisioni.
- Complessità: XXH128 utilizza una fase di finalizzazione più complessa per "comprimere" gli stati interni in un digest finale a 128 bit, mentre XXH3 (64 bit) termina leggermente prima.