2010-04-28 17 views
6

Non capisco perfettamente gli algoritmi di hashing. A nessuno importa di spiegarmelo in un modo molto comprensibile.Hashing Algorithm, i suoi usi?

Grazie

EDIT: Usando con nomi utente da un file di testo.

+2

Accidentalmente l'algoritmo di hash – mquander

+0

Ci sono molti "algoritmi di hash" e molti usi per l'hashing. Forse potresti essere più specifico nella tua domanda? – Amber

+0

Hai dimenticato lo –

risposta

10

Ci sono un sacco di hashing algorithms, ma l'idea di base è quella di identificare rapidamente e (quasi) in modo univoco un dato per un dato. Questo può quindi essere usato come un indice in una tabella in modo che i dati possano essere rapidamente consultati. La maggior parte degli algoritmi hash hanno collisioni, in cui due parti di dati avranno lo stesso valore, ma questo è estremamente raro per i migliori algoritmi.

Per un esempio del perché questo potrebbe essere utile, diciamo che ho cancellato l'intera rubrica della mia città. Ora invece di fare una ricerca binaria quando voglio cercare il numero di qualcuno tutto quello che devo fare è eseguire il loro nome attraverso l'algoritmo di hashing, quindi andare direttamente a a quell'indice nella mia tabella.

+0

Grazie, questo ha aiutato. – ritch

+0

anche per quella ricerca di nomi abbiamo bisogno di usare binario o lineare giusto? Quindi quale punto nel convertirlo in hash –

+0

@bharathmuppa No, non è giusto. Hai cancellato il nome in un numero intero e vai direttamente a quell'indice. –

2

Supponendo che tu stia chiedendo a qualcuno di spiegare fondamentalmente un uso per l'hashing, pensa a un array. Ora immagina un enorme array in cui vuoi trovare una porzione specifica di dati che si trova solo in uno slot dell'array. Invece di scorrere l'array, puoi prendere i dati di input e usarli per calcolare l'indice. Usando la stessa formula che hai usato per memorizzare i dati nell'array, puoi semplicemente saltare alla posizione dei dati che desideri invece di eseguire il ciclo.

+0

Grazie, questo ha aiutato. – ritch

2

Gli algoritmi di hash tentano di semplificare il confronto dei grandi dati. Invece di confrontare i dati con l'uguaglianza, è sufficiente confrontare i valori hash.

Esistono molti algoritmi di hashing diversi, alcuni dei quali sono algoritmi di hashing crittografici come MD5, SHA1, SHA256, ecc. Si hanno due valori di hash uguali, si può essere certi, che i dati sono uguali.

+0

Grazie, anche questo ha aiutato. – ritch

2

Un hash indica una relazione 1 a 1 tra i dati. Questo è un tipo di dati comune nelle lingue, anche se a volte è chiamato chiamato dizionario. Un algoritmo hash è un modo per prendere un input e avere sempre lo stesso output, altrimenti noto come funzione 1 a 1. Una funzione di hash ideale è quando lo stesso processo sempre restituisce un output univoco. Quindi puoi dire a qualcuno, ecco un file, e qui c'è il suo hash MD5. Se il file è stato danneggiato durante l'hash md5 sarà un valore diverso.

In pratica una funzione di hash produce sempre un valore della stessa dimensione, ad esempio md5() restituirà sempre 128 bit indipendentemente dalla dimensione dell'input. Ciò rende impossibile una relazione 1 a 1. A cryptographic hash function prende ulteriori precauzioni nel rendere difficile la produzione di 2 ingressi diversi con la stessa uscita, questo si chiama collisione. Rende anche difficile invertire la funzione. Le funzioni hash vengono utilizzate per la memorizzazione delle password perché se un utente malintenzionato in cui ottenere l'hash della password impone l'hacker di interrompere l'hash prima di poterlo utilizzare per accedere. Per rompere gli attacchi di hash ci vorrà un elenco di parole o un dizionario inglese e trovare tutti i valori hash corrispondenti e quindi scorrere l'elenco per ogni password alla ricerca di una corrispondenza.

md5(), sha0 e sha1() sono tutti vulnerabili a un attacco di collisione hash e non dovrebbero mai essere utilizzati per scopi di sicurezza. Invece, dovrebbe essere usato qualsiasi membro della famiglia sha-2, come lo sha-256.