2010-04-28 10 views
6

No entiendo completamente los algoritmos hash. A nadie le importa explicarme de una manera muy simple y comprensible.Hashing Algorithm, its uses?

Gracias

EDIT: Si la utiliza con nombres de usuario desde un archivo de texto.

+2

Usted accidentalmente el algoritmo de hash – mquander

+0

Hay muchos "algoritmos de hash", y muchos usos para hash. ¿Quizás podría ser más específico en su pregunta? – Amber

+0

Olvidaste –

Respuesta

10

Hay un montón de hashing algorithms, pero la idea básica es rápida y (casi) única, crear un identificador para un dato. Esto se puede usar como un índice en una tabla para que los datos puedan buscarse rápidamente. La mayoría de los algoritmos de hash tienen colisiones, donde dos datos se mezclan al mismo valor, pero esto es extremadamente raro para los mejores algoritmos.

Para ver un ejemplo de por qué esto podría ser útil, digamos que crucé todo el listín telefónico de mi ciudad. Ahora, en lugar de hacer una búsqueda binaria cuando quiero buscar el número de alguien, todo lo que tengo que hacer es ejecutar su nombre a través del algoritmo hash y luego ir a directamente a ese índice en mi tabla.

+0

Gracias, esto ayudó. – ritch

+0

incluso para la búsqueda de ese nombre, necesitamos usar el binario o el derecho, ¿cuál es el sentido de convertirlo a hash? –

+0

@bharathmuppa No, eso no está bien. Hash el nombre en un entero e ir directamente a ese índice. –

2

Suponiendo que le pides a alguien que básicamente explique un uso para hash, piensa en una matriz. Ahora imagine una gran matriz en la que desee encontrar una pieza específica de datos que esté solo en una ranura de matriz. En lugar de iterar a través de la matriz, puede tomar datos de entrada y usarlos para calcular el índice. Usando la misma fórmula que usaste para almacenar los datos en la matriz, puedes simplemente saltar a la ubicación de los datos que deseas en lugar de hacer un bucle.

+0

Gracias, esto ayudó. – ritch

2

Los algoritmos hashing intentan facilitar la comparación de datos grandes. En lugar de comparar datos con igualdad, es suficiente comparar los valores hash.

Hay muchos algoritmos hash diferentes, algunos de ellos son algoritmos hash criptográficos como MD5, SHA1, SHA256, etc. Si tiene dos valores hash iguales, puede estar seguro de que los datos también son los mismos.

+0

Gracias, esto también ayudó. – ritch

2

Un hash significa una relación de 1 a 1 entre los datos. Este es un tipo de datos común en los idiomas, aunque a veces se llama un diccionario. Un algoritmo hash es una forma de tomar una entrada y siempre tener la misma salida, también conocida como función 1 a 1. Una función hash ideal es cuando este mismo proceso siempre produce una salida única. Entonces puedes decirle a alguien, aquí hay un archivo, y aquí está su hash md5. Si el archivo se ha dañado durante el hash md5 tendrá un valor diferente.

En la práctica, una función hash siempre producirá un valor del mismo tamaño, por ejemplo md5() siempre devolverá 128 bits sin importar el tamaño de la entrada. Esto hace que una relación 1 a 1 sea imposible. Un cryptographic hash function toma precauciones adicionales para dificultar la producción de 2 entradas diferentes con la misma salida, esto se llama colisión. También hace que sea difícil revertir la función. Las funciones hash se usan para el almacenamiento de contraseñas porque si un atacante obtiene el hash de la contraseña, entonces obliga al atacante a romper el hash antes de que pueda usarlo para iniciar sesión. Para romper los ataques de hashes, se tomará una lista de palabras o un diccionario de inglés y se encontrarán todos los valores de hash correspondientes, y luego se repetirá la lista para cada contraseña que busque una coincidencia.

md5(), sha0 y sha1() son todos vulnerables a los ataques de colisión hash y nunca deben utilizarse para nada relacionado con la seguridad. En su lugar, se debe usar cualquier miembro de la familia sha-2, como sha-256.