3 razones principales por las que se utilizan las funciones hash:
- Búsqueda rápida: el hash de algún valor en un número significa que un valor se puede asignar a una posición. Por lo tanto, en lugar de tener que buscar un valor en una lista grande, se puede encontrar de una vez. Este tipo de colecciones de datos se denomina hashmaps / hashtables / hashsets / dictionary / etc.
- Guardar / comparar contraseñas: utilizando un hash unidireccional (es decir, no se puede revertir) un servidor puede almacenar el valor hash en lugar de la contraseña. Luego, cuando un usuario inicia sesión nuevamente, su contraseña ingresada se convierte al valor hash que se envía al servidor para su comparación. Por lo tanto, la contraseña real nunca se envía a través de la red, el servidor nunca ve la contraseña, solo un valor derivado de dicha contraseña. Protege las credenciales del usuario de muchas formas de espionaje.
- Verificaciones de integridad de datos: cosas como el hash CRC significa que incluso si los datos son solo ligeramente diferentes, el hash varía mucho. Esto significa que verificar los datos enviados a través de alguna forma de comunicación contra un hash puede mostrar si ha habido algún daño. Casi todas las formas de redes dividen los datos en paquetes, cada uno con un hash para que el receptor pueda verificar si recibieron los datos según lo previsto, comparando el hash calculado de los datos recibidos con el hash recibido.
Entonces, los “problemas” resueltos por hashing:
- Encontrar algo en una lista grande sin buscarlo.
- Almacenar “contraseñas” y credenciales de inicio de sesión sin enviar o almacenar dicha contraseña / credencial directamente.
- Comprobar que los datos enviados no están dañados cuando se reciben.
- ¿Cómo se creó el 'algoritmo' de la evolución biológica?
- ¿Existen campamentos de programación a tiempo completo en Europa para mejorar la programación o las estructuras de datos y habilidades de algoritmos?
- ¿Hay algún algoritmo fijo para resolver el cubo de Rubik? Si es así, ¿qué es?
- Cómo escribir algoritmos de programación eficientes
- ¿Tengo que aprender estructuras de datos antes de aprender algún lenguaje de programación?