Vous êtes sur la page 1sur 5

Introducción.

En el siguiente documento se muestra la investigación y proceso de desarrollo de


una herramienta didáctica especificada en búsqueda haciendo uso del proceso de
búsqueda por transformación de claves (O hashing en inglés).

El objetivo de esta investigación tiene lugar en el ámbito de búsqueda en la


estructura de datos, debido a que cuando trabajamos con algoritmos,
normalmente nos interesa su rendimiento. Nos interesa saber, por ejemplo, de qué
forma se comporta el algoritmo dado una cantidad determinada de datos a
procesar.

Como se menciona anteriormente, una de las ventajas de hacer uso del hashing
es que mediante este proceso se pueden hacer mejoras a nuestros algoritmos de
búsqueda aprovechando la información acerca de dónde se almacenan los ítems
en la colección con respecto a los demás. Por ejemplo, al saber que se ordenó
una lista, podríamos buscar en tiempo logarítmico usando una búsqueda binaria.

Para hacer esto, necesitaremos saber aún más sobre dónde podrían estar los
ítems cuando vamos a buscarlos en la colección. Si cada ítem está donde debe
estar, entonces la búsqueda puede usar una sola comparación para descubrir la
presencia de un ítem. Veremos, sin embargo, que éste no suele ser el caso.
Cuenta también con la ventaja de que el tiempo de búsqueda es prácticamente
independiente del número de componentes del arreglo.

Por todo lo mencionado, para trabajar con este método de búsqueda debe elegirse
previamente.

 Una función hash que sea fácil de calcular y que distribuya uniformemente
las claves.
 Un método para resolver colisiones. Si estas se presentan se debe contar
con algún método que genere posiciones alternativas.
Antecedentes.

El término hash proviene, aparentemente, de la analogía con el significado


estándar (en inglés) de dicha palabra en el mundo real: picar y mezclar. Donald
Knuth cree que H. P. Luhn, empleado de IBM, fue el primero en utilizar el concepto
en un memorándum fechado en enero de 1953. Su utilización masiva no fue hasta
después de 10 años. (Guardati, 1996)

Metodología.
Al conjunto U se le llama dominio de la función resumen. A un elemento de U se le
llama preimagen o dependiendo del contexto clave o mensaje.
Al conjunto M se le llama imagen de la función hash. A un elemento de M se le
llama valor resumen, código hash o simplemente hash.
Se dice que se produce una colisión cuando dos entradas distintas de la función
resumen producen la misma salida. De la definición de función resumen podemos
decir que U, el dominio de la función, puede tener infinitos elementos. Sin
embargo M, el rango de la función, tiene un número finito de elementos debido a
que el tamaño de sus cadenas es fijo. Por tanto la posibilidad de existencia de
colisiones es intrínseca a la definición de función hash. Una buena función
resumen es una que tiene pocas colisiones en el conjunto esperado de entrada.
Es decir, se desea que la probabilidad de colisión sea muy baja.
Para acortar, los hash o funciones de resumen son algoritmos que consiguen
crear a partir de una entrada (ya sea un texto, una contraseña o un archivo, por
ejemplo) una salida alfanumérica de longitud normalmente fija que representa un
resumen de toda la información que se le ha dado (es decir, a partir de los datos
de la entrada crea una cadena que solo puede volverse a crear con esos mismos
datos).

Estas funciones no tienen el mismo propósito que la criptografía simétrica y


asimétrica, tiene varios cometidos, entre ellos está asegurar que no se ha
modificado un archivo en una transmisión, hacer ilegible una contraseña o firmar
digitalmente un documento.

En definitiva las funciones hash se encargan de representar de forma compacta un


archivo o conjunto de datos que normalmente es de mayor tamaño que el hash
independientemente del propósito de su uso.

Este sistema de criptografía usa algoritmos que aseguran que con la respuesta
(o hash) nunca se podrá saber cuáles han sido los datos insertados, lo que indica
que es una función unidireccional. Sabiendo que se puede generar cualquier
resumen a partir de cualquier dato nos podemos preguntar si se podrían repetir
estos resúmenes (hash) y la respuesta es que teóricamente si, podría haber
colisiones, ya que no es fácil tener una función hash perfecta (que consiga que no
se repita la respuesta), pero esto no supone un problema, ya que si se
consiguieran (con un buen algoritmo) dos hash iguales los contenidos serían
totalmente distintos.

Las funciones hash son muy usadas, una de las utilidades que tiene es proteger la
confidencialidad de una contraseña, ya que podría estar en texto plano y ser
accesible por cualquiera y aun así no poder ser capaces de deducirla. En este
caso, para saber si una contraseña que está guardada, por ejemplo, en una base
de datos es igual a la que hemos introducido no se descifra el hash (ya que
debería de ser imposible hacerlo) sino que se aplicará la misma función de
resumen a la contraseña que especificamos y se comparará el resultado con el
que tenemos guardado (como se hace con las contraseñas de los sistemas Linux).
Objetivo general.

Crear una aplicación didáctica, la cual muestre y explique el proceso de búsqueda


en algoritmos haciendo uso de las llaves hash, dirigida a los alumnos en formación
en los primeros semestres de la carrera de ingeniería en sistemas
computacionales así como maestros que impartan la materia de estructura de
datos y otras materias de programación, con el fin de dar a conocer este proceso y
los beneficios que este conlleva.

Objetivos específicos.

 Conocer la historia, proceso y uso del proceso del hashing para su posterior
implementación en un lenguaje de programación
 Mediante el uso de un lenguaje de programación, crear una herramienta
que permita hacer uso del proceso de hashing, procurando que tanto
alumno, como maestro tengan la misma facilidad en su uso.
 Aumentar las herramientas didácticas disponibles para alumnos en
materias de programación.
 Documentar y establecer límites para el desarrollo de la herramienta
didáctica y permitir con esto un correcto funcionamiento de la misma.
Bibliografía
Aguilar, L. J. (2005). Fundamentos de programación, algoritmos, estructura de datos y objetos.
Mexico.

Guardati, O. C. (1996). Estructuras de Datos. México: McGraw-Hill.

Speirs, W. (2007). Dynamic cryptographic hash functions. Purdue University School.

Vous aimerez peut-être aussi