Come testare se un algoritmo di hash è buono? [duplicare]

2

Ho creato un algoritmo di hash e vorrei testare se è utilizzabile. Cosa devo testare e come?

    
posta SteeveDroz 16.12.2012 - 12:02
fonte

1 risposta

3

Risposta breve: dipende da molti fattori.

Non esiste una buona funzione di hash per gli hash universali (anche se esiste una cosa come "hashing universale" ma ha un significato diverso).

A seconda del contesto, diversi criteri determinano la qualità di un hash. Alcune persone potrebbero avere problemi con SHA, tuttavia è un hash crittografico e non lo è Va bene per le tabelle hash che probabilmente intendi.

Risposta più lunga: Ciascuna tabella hash ha requisiti molto specifici, e comunque trovare una buona funzione di hash è difficile perché diversi tipi di dati espongono informazioni diverse che possono essere sottoposte a hash. Come regola generale è bene considerare tutte le informazioni che un tipo sia valido allo stesso modo. Questo non è sempre facile o addirittura possibile. Per ragioni di statistica (e quindi di collisione), è anche importante generare una buona diffusione nello spazio del problema, cioè tutti gli oggetti possibili. Ciò significa che quando numeri di hashing tra 100 e 1050 non va bene lasciare che la cifra più significativa giochi un ruolo importante nell'hash perché per ~ 90% degli oggetti, questa cifra sarà 0. È molto più importante lasciare le ultime tre le cifre determinano l'hash.

Un'altra cosa importante quando le stringhe di hashing è considerare tutti i caratteri (tranne quando è noto in anticipo che i primi tre caratteri di tutte le stringhe saranno uguali: perché sarebbe uno spreco)

Modifica:

1) Solo per eliminare la confusione tra hash e crittografia guarda qui - Differenza fondamentale tra gli algoritmi di hashing e crittografia

2) Anche una buona discussione su - Qual è la differenza tra una funzione hash e una funzione hash crittografica?

Riferimenti per cercare:

risposta data 16.12.2012 - 13:54
fonte

Leggi altre domande sui tag