
Las funciones hash o funciones resumen son unas funciones que toman una gran cantidad de información y la condensan en un conjunto de datos de tamaño menor y constante.
Las funciones hash tienen unas propiedades que se pueden resumir en las siguiente:
-
Para un conjunto de datos de cualquier tamaño la función hash siempre nos devolverá un conjunto de datos de longitud fija. Por ejemplo, si obtenemos el hash SHA-1 de N 42 14.175 E 003 13.049 nos dará como resultado:
09ed16b5df051cb951e5a8d6dce10a2f3aec3cab
Si ahora obtenemos el de Este cache se encuentra en norte cuarenta y dos grados catorce coma cientos setenta y cinco y este tres grados 13 coma cero cuarenta y nueve minutos el hash obtenido es:
79d82199339ad7a1b3e792c76fa0fa1806dc3c1f
como se puede ver, los hash tienen el mismo tamaño.
-
Para cada entrada A se generará una única salida B y además aunque cambie un solo carácter la función cambia completamente.
Por ejemplo utilizando MD5:
N 40 14.175 E 003 39.049 da 70670b2aeae9b0c4e75aca2cb0923e5c y
N 40 14.175 E 003 39.048 da f5ec26a6cc99dcb6dc0d9802b59201a6 como vemos el resultado es completamente distinto.
-
Obtener la función hash de un texto o mensaje es una operación sencilla y rápida utilizando un ordenador.
-
A partir del hash es prácticamente imposible obtener el mensaje original. Para que esto sea así se utilizan lo que se conoce con one-way functions son funciones que son muy fáciles de utilizar en un sentido pero no en el otro. Son como una gran cuesta, muy fácil de bajar pero difícil de subir.
Y una vez vista la introducción, vamos a ver para qué sirven este tipo de funciones. En primer lugar decir que no se pueden utilizar para hacer criptografía puesto que como hemos visto en la última propiedad una vez obtenido el resumen es casi imposible volver al mensaje original. Bien, sus utilidades son muy variadas y entre otras muchas son :
-
Proteger la integridad de un mensaje. Si junto con un mensaje tenemos su hash, siempre podremos estar seguros de que si mensaje y hash coinciden el texto del mensaje no ha sido modificado. Es parecido al número del DNI, la última letra es una función hash de los números y por tanto si nos equivocamos en un número podemos saber que el DNI no es correcto.
-
Identificación y comparación rápida de datos. Si tengo una gran cantidad de documentos almacenados y quiero localizar uno o saber si este ya existe en mi biblioteca, en lugar de comparar todo el fichero lo que hago es buscar el hash (que es mucho más corto) y encontrado el hash ya tengo encontrado el fichero. Esto se utiliza, por ejemplo, en las redes per to per como Torrent, Kazan.. para identificar si ya existe el fichero, aunque sea con otro nombre, si el hash coincide el contenido coincide.
-
Como sistema de protección de contraseñas o en procesos de verificación de datos. En un servidor al cual se accede con contraseña, en lugar de guardarse las contraseñas, se guarda el hash de la mismas. Cuando el usuario accede al sistema envía su contraseña, en el servidor se calcula el hash de esta y se verifica que coincide con el hash de la misma es que la contraseña en la misma y se da acceso. Con este procedimiento se evita que si alguien ilegalmente accede a los datos del servidor, no obtendrá las contraseñas, obtendrá los hash. Esto puede ser útil en sistemas como Geochek , para evitar que sea pirateado , como ya ha ocurrido, se puede proceder a guardar en la base de datos los hash de las coordenadas en lugar de las coordenadas.
Existe diversos algoritmos para obtener una función resumen entre los más utilizados están el SHA1 o el MD5 .
EL CACHÉ:
Jugando con esto de los hash y pensé en poner un misterio relacionado con esto. Comencé haciendo el hash de las coordenadas iniciales N 40 18.734 W 003 43.587 que me dio como resultado:
86af2273f27dd441afaf0958249034b0
luego hice el de las finales y me salió:
ec16eacbc1586c97560a16683f3d917a
El problema es que perdí las finales y solo me queda el hash por lo que vas a tener que buscar tú las coordenadas.
El caché no tiene GeoCheker porque las funciones hash sirven por si mismas como tal.
REFERENCIAS:
http://foro.elhacker.net/criptografia/funciones_de_hash-t100025.0.html
https://es.wikipedia.org/wiki/Función_hash