Las funciones Hash (también conocidas como funciones resumen) son funciones que, utilizando un algoritmo matemático, transforman un conjunto de datos en un código alfanumérico con una longitud fija. Da igual la cantidad de datos que se utilice (muchos o pocos), el código resultante tendrá siempre el mismo número de caracteres.

Conjunto de datos

Cuando nos referimos a un conjunto de datos, puede ser cualquier tipo de contenido digital. Ya sean textos, fotografías, video, música… Lo que tendremos que tener en cuenta es el formato de los archivos. Aunque un texto sea exactamente igual en formato .pdf y .docx, sus códigos alfanuméricos o hashes serán diferentes.

Algoritmo matemático y código alfanumérico

El termino Hash proviene del inglés y significa “picadillo”. En consonancia con este significado, el algoritmo matemático “pica”, “trocea” y “mezcla” el conjunto de datos y crea un nuevo código con una longitud indicada. Cuando hablamos de funciones Hash, hacemos referencia a diferentes algoritmos matemáticos de resumen. Por tanto, no existe una sola función de Hash, sino que encontramos una pluralidad de ellas. Entre las funciones más conocidas encontramos las denominadas SHA-2 (Secure Hash Algorithm). SHA-2 se compone de 4 funciones: SHA-224; SHA-256, SHA-384 y SHA_512. Cada una de ellas da un Hash diferente para un mismo conjunto de datos, y la longitud del Hash es de 224, 256, 384 y 512 bits dependiendo de la función elegida.

Por noma general, los Hashes son representados en código alfanumérico hexadecimal. Por tanto, los 256 bits del SHA-256, nos entrega un código alfanumérico de 64 caracteres.

Una de las principales características de las funciones Hash es que cada conjunto de datos al que se le aplica la función nos dará un hash único, por muy pequeña que sea la variación en los datos. Otra de ellas es la prácticamente imposibilidad de obtener el conjunto de datos a partir del código alfanumérico. Es decir, es una función de solo sentido.

Utilidades de las funciones hash

Las funciones Hash y los códigos alfanuméricos que generan tienen muchas utilidades. En este post no indicaremos todas y cada una de las funcionalidades, pero os indicamos algunas de ellas.

El Hash es muy utilizado en la gestión de los identificadores y contraseñas. Cuando una persona accede a un Saas (Software as a service), el sistema debe comprobar previamente que el usuario y la contraseña introducidas son correctas para poder acceder al servicio. Para que exista un mayor nivel de seguridad, el sistema no guarda la contraseña, sino que guarda el Hash de la contraseña. Y, por tanto, cuando introducimos nuestra contraseña para acceder, el sistema calcula el Hash de la contraseña y lo compara con el guardado en el sistema. Si ambos coinciden, permitirá el acceso. Esta es la razón por la cual los sistemas de internet no pueden devolverte la contraseña olvidada, porque no la tienen. Deberás generar una nueva contraseña, para que se calcule el Hash y que el sistema la guarde.

Otra de las utilidades de las funciones Hash es determinar de forma rápida la inalterabilidad de un documento o archivo. Como cada documento genera un Hash único (como una matrícula de coche), si un documento ha sido alterado su Hash será diferente al anterior. Esta misma función permite una trazabilidad de los documentos o archivos. Al tener un identificador único, se podrán identificar cualquier copia del documento o archivo.

Por último, destacar la funcionalidad de las funciones Hash en el entorno blockchain, función que permite el sistema se cerrado de bloques y el estampado de documentos.

Finalmente os dejo este enlace a una página que os permite utilizar las diferentes funciones de SHA-2.