L'hash di murmur3 ha memoria?

3

Questa implementazione dell'hash di Murmur produce risultati diversi quando viene chiamata due volte di seguito:

Murmur3 m3 = new Murmur3();
var la = m3.ComputeHash(new byte[] { 1, 2 });
var lb = m3.ComputeHash(new byte[] { 1, 2 });
//la and lb now have different bytes

Da nessuna parte in descrizione di Murmur su wikipedia si dice che l'hash dovrebbe tenere conto dei precedenti valori hash o mantenere / controlla la sequenza di ciò che è stato cancellato.

È un bug in questa implementazione? Ho frainteso l'articolo di Wikipedia? Ho frainteso l'intenzione dell'attore?

    
posta Andrew Savinykh 03.04.2016 - 01:06
fonte

1 risposta

5

Il metodo ComputeHash nel codice che colleghi chiama ProcessBytes e restituisce l'hash. ProcessBytes viene utilizzato per l'hashing incrementale di grandi quantità di dati, quindi conserva la memoria tra le chiamate. In questa implementazione, non chiamare ComputeHash più di una volta, poiché le chiamate successive non iniziano dai valori di registro corretti. Crea un nuovo oggetto prima della seconda chiamata per ottenere risultati corretti.

    
risposta data 03.04.2016 - 12:22
fonte

Leggi altre domande sui tag