Questo strumento online ti consente di generare l'Hash murmur3a di qualsiasi stringa.
MURMUR3A è lungo 8 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'è Murmur3A?
Murmur3A è una funzione hash non crittografica ad alte prestazioni appartenente alla famiglia MurmurHash3, sviluppata da Austin Appleby. È stata progettata specificatamente per essere estremamente veloce ed efficace nelle tabelle di ricerca basate su hash (hash map). Poiché non è crittografica, non è destinata alla sicurezza o alla protezione dei dati da attacchi malevoli; eccelle invece nella distribuzione uniforme delle chiavi all'interno di una tabella hash, riducendo al minimo le collisioni nelle strutture dati ad alto carico.
Come funziona l'hash Murmur3A?
L'algoritmo elabora i dati di input in blocchi da 4 byte, eseguendo una serie di operazioni bit per bit per mescolare accuratamente i bit di input:
- Inizializzazione: Si inizia con un valore seed (un intero a 32 bit) per inizializzare lo stato dell'hash.
- Elaborazione del corpo: L'input viene suddiviso in blocchi da 32 bit. Per ogni blocco, l'algoritmo esegue una moltiplicazione per una grande costante (la "costante magica"
0xcc9e2d51), una rotazione dei bit a sinistra (ROL) e un'altra moltiplicazione per una seconda costante (0x1b873593). - Mixing: il risultato viene sottoposto a un'operazione XOR con lo stato hash corrente, e lo stato hash stesso viene ruotato e moltiplicato per garantire effetti a valanga (in cui la modifica di un bit nell'input modifica molti bit nell'output).
- Finalizzazione: Dopo aver elaborato tutti i blocchi (e gestito eventuali byte di coda rimanenti), l'algoritmo esegue un passo finale di "mix" o "valanga", che utilizza XOR-shift per garantire che anche piccole differenze nell'input producano valori hash di output significativamente diversi.
Differenza tra Murmur3A e CRC32C
Sebbene entrambe siano funzioni hash veloci e non crittografiche, sono ottimizzate per compiti diversi:
- Resistenza alle collisioni: Murmur3A è significativamente migliore nel distribuire le chiavi in modo uniforme, rendendolo superiore per l'uso in tabelle hash e strutture di dati. CRC32C è progettato per il rilevamento degli errori nei flussi di dati, quindi è matematicamente ottimizzato per individuare modelli di corruzione piuttosto che distribuire chiavi.
- Prestazioni: CRC32C si affida fortemente a specifiche istruzioni hardware (SSE4.2 sulle CPU moderne) per essere veloce. Murmur3A è progettato per essere altamente efficiente nell'implementazione puramente software, rendendolo più veloce su hardware o piattaforme più vecchie dove il CRC con accelerazione hardware non è disponibile.
- Effetto valanga: Murmur3A ha un "effetto valanga" molto più forte, il che significa che l'output è molto più sensibile alle variazioni dell'input rispetto a CRC32C, il che è un requisito fondamentale per evitare i cluster nell'archiviazione dei dati basata su hash.