En cualquier campo de la informática que nos encontremos, la función Hash tiene un
tremendo valor que pocos conocen. En el mundo digital, cualquier archivo (foto, vídeo, imagen, documento, programa, etc.) está sometido a una constante manipulación de este. Cuando modificamos un fichero de texto, aplicamos un filtro a una imagen o comprimimos un vídeo, estamos interfiriendo en el archivo original y cambiándolo a nuestro antojo, generalmente para bien, pero también puede ser para mal. Explicado grosso modo, la función Hash no es más que un algoritmo criptográfico aplicado al archivo que nos interese garantizar, el cual nos dará como resultado una cadena alfanumérica única. El más mínimo cambio que pudiera sufrir el archivo alteraría dicha cadena, dándonos como resultado una completamente diferente. Este proceso es aplicable a todo archivo digitalizado, y es tremendamente útil a la hora de garantizar la integridad de una foto, un contrato o un audio, por ejemplo. No vamos a encontrarnos dos Hash iguales, a no ser, que el segundo archivo sea completamente idéntico al primero.
Métodos para solucionar colisiones
Cuando hay colisiones se requiere de un proceso adicional para encontrar una posición disponible para la clave. Esto obviamente degrada la eficiencia del método, por lo que se trata de evitar al máximo esta situación. Una función de hashing que logra evitar al 100% las colisiones son conocida como hashing perfecto. 9. Ahora bien, cuando se tienen dos números que generan la misma dirección se tiene una colisión. Por lo tanto, se necesita solucionar la colisión. Tenemos dos tipos de direccionamiento: • 1) Direccionamiento Abierto. Este tipo de solución de colisiones consiste en colocar en la siguiente posición vacía el número que generó la colisión. Posición 1 2 3 4 5 6 31 41 13 Números a insertar: 31, 41, 13 2. Direccionamiento Cerrado: Este tipo de solución de colisiones no se tiene ningún problema con que se repita la misma dirección, utilizando el uso de listas. 3. Truncamiento: • Ignora parte de la clave y se utiliza la parte restante directamente como índice (considerando campos no numéricos y sus códigos numéricos). • Si las claves, por ejemplo; son enteros de ocho dígitos y la tabla de transformación tiene mil posiciones, entonces el primero, segundo y quinto dígitos desde la derecha pueden formar la función de conversión. Ejemplo: 72588495 se convierte en 895. El truncamiento es un método muy rápido, pero falla para distribuir las claves de modo uniforme. 4. Plegamiento: La técnica de plegamiento consiste en la partición de la clave en diferentes partes y la combinación de las partes en un modo conveniente ( a menudo utilizando suma o multiplicación) para obtener el índice. • Ejemplo: 13000000 --> 130=130+000+00 12345678 --> 657=123+456+78 71140205 --> 118 --> 1118=711+402+05 13602499 --> 259=136+024+99 25000009 --> 259=250+000+09