Aplicaciones de hashing

En este artículo discutiremos las aplicaciones de hashing

Hashing proporciona operaciones de búsqueda, inserción y eliminación de tiempo constante en promedio. Esta es la razón por la que el hash es una de las estructuras de datos más utilizadas, los problemas de ejemplo son elementos distintos , conteo de frecuencias de elementos, búsqueda de duplicados, etc. 

Hay muchas otras aplicaciones de hashing, incluidas las funciones hash de criptografía modernas. Algunas de estas aplicaciones se enumeran a continuación: 

  • Resumen del mensaje
  • Verificación de contraseña
  • Estructuras de datos (lenguajes de programación)
  • Operación del compilador
  • Algoritmo de Rabin-Karp
  • Vincular el nombre del archivo y la ruta juntos
  • tableros de juego
  • Gráficos

Vamos a verlos uno por uno en detalle:

Resumen de mensajes: 
esta es una aplicación de funciones hash criptográficas. Las funciones hash criptográficas son las funciones que producen una salida a partir de la cual llegar a la entrada es casi imposible. Esta propiedad de las funciones hash se llama irreversibilidad

Tomemos un ejemplo

Suponga que tiene que almacenar sus archivos en cualquiera de los servicios en la nube disponibles. Debe asegurarse de que los archivos que almacena no sean manipulados por terceros. Lo hace calculando el «hash» de ese archivo usando un algoritmo de hash criptográfico. Uno de los algoritmos hash criptográficos comunes es SHA 256 . El hash así calculado tiene un tamaño máximo de 32 bytes. Por lo tanto, calcular el hash de una gran cantidad de archivos no será un problema. Guarda estos hashes en su máquina local. 

Ahora, cuando descarga los archivos, vuelve a calcular el hash. Luego lo emparejas con el hash anterior calculado. Por lo tanto, sabe si sus archivos fueron manipulados o no. Si alguien manipula el archivo, el valor hash del archivo definitivamente cambiará. Manipular el archivo sin cambiar el hash es casi imposible. 

Verificación de contraseñas:
las funciones hash criptográficas se utilizan con mucha frecuencia en la verificación de contraseñas. Entendamos esto usando un ejemplo
cuando usa cualquier sitio web en línea que requiere un inicio de sesión de usuario, ingresa su correo electrónico y contraseña para autenticar que la cuenta que está tratando de usar le pertenece. Cuando se ingresa la contraseña, se calcula un hash de la contraseña que luego se envía al servidor para verificar la contraseña. Las contraseñas almacenadas en el servidor son en realidad valores hash calculados de las contraseñas originales. Esto se hace para garantizar que cuando la contraseña se envíe del cliente al servidor, no haya ningún rastreo. 

Estructuras de datos (lenguajes de programación): 
varios lenguajes de programación tienen estructuras de datos basadas en tablas hash. La idea básica es crear un par clave-valor donde se supone que la clave es un valor único, mientras que el valor puede ser el mismo para diferentes claves. Esta implementación se ve en unordered_set y unordered_map en C++, HashSet y HashMap en java, dict en python, etc. 

Operación del compilador: 
las palabras clave de un lenguaje de programación se procesan de manera diferente a otros identificadores. Para diferenciar entre las palabras clave de un lenguaje de programación (if, else, for, return, etc.) y otros identificadores y compilar correctamente el programa, el compilador almacena todas estas palabras clave en un conjunto que se implementa mediante una tabla hash. 

Algoritmo de Rabin-Karp : 
una de las aplicaciones más famosas de hashing es el algoritmo de Rabin-Karp. Básicamente, se trata de un algoritmo de búsqueda de strings que utiliza hashing para encontrar cualquier conjunto de patrones en una string. Una aplicación práctica de este algoritmo es la detección de plagio. Para saber más sobre Rabin-Karp, visita también Buscando patrones | Conjunto 3 (algoritmo de Rabin-Karp)

Vincular el nombre del archivo y la ruta juntos: 
cuando nos movemos a través de archivos en nuestro sistema local, observamos dos componentes cruciales de un archivo, es decir, nombre_archivo y ruta_archivo. Para almacenar la correspondencia entre file_name y file_path, el sistema utiliza un mapa (file_name, file_path) que se implementa mediante una tabla hash. 

Tableros de juego: 
en un juego como Tic-Tac-Toe o ajedrez, la posición del juego se puede almacenar usando una tabla hash

Gráficos: 
El problema central del almacenamiento en un almacenamiento gráfico de objetos. Para ello, los datos se organizan mediante hashing. También se usa para hacer una cuadrícula del tamaño apropiado. Almacenamos la cuadrícula en una array 1D como lo hacemos en el caso de arrays dispersas. Todo el punto almacenado en una celda se almacenará en el mismo lugar. Si los tres puntos se almacenarán en la misma entrada, contendrá tres puntos. aquí la función hash se usa para mapear la cuadrícula de la celda a la ubicación de la memoria. La ventaja clave de este método de almacenamiento es la ejecución rápida de la operación de búsqueda.

Artículos relacionados: 

Publicación traducida automáticamente

Artículo escrito por Kushagra7744 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *