¿Qué son los hashes?

Los hash son fórmulas matemáticas que toman una cadena de datos de longitud variable, generalmente en forma de texto, y la convierten en valores numéricos más cortos y de longitud fija. Los hash se utilizan con frecuencia en las bases de datos informáticas para hacer búsquedas más rápidas y eficientes. También se utilizan en el cifrado para garantizar que las contraseñas no se vean comprometidas y para autenticar firmas digitales, entre otros usos. Los hash también se conocen con el nombre de funciones hash y también se pueden considerar algoritmos.

Los hash juegan un papel importante para facilitar las búsquedas en las bases de datos. En una base de datos que consta de nombres, por ejemplo, si un usuario busca «John Doe», la computadora tendría que hacer coincidir todos los caracteres de la búsqueda con los de cada entrada de la base de datos. Cada carácter del nombre tendría 26 posibilidades diferentes, las letras del alfabeto inglés, mientras que la longitud variable de las entradas también ralentizaría la búsqueda.

Por el contrario, aplicar una función hash facilitaría mucho la vida de la computadora. Convertir cada cadena de texto en una serie de números simplificaría la búsqueda, porque la computadora solo tendría diez posibilidades para verificar cada carácter: dígitos del «0» al «9». La longitud fija de la serie de números también ayuda a que la computadora haga su trabajo de manera más eficiente.

En una base de datos con una función hash aplicada, todas las entradas tienen un número único correspondiente. Esto se llama clave hash. En este caso, cuando realiza una búsqueda, la computadora primero aplica la función hash a la entrada que ha escrito, como «John Doe». Esto da como resultado un valor numérico, por ejemplo, «456789». La computadora puede entonces hacer coincidir rápidamente este resultado con la clave hash correspondiente a la entrada correcta.

Los hash también funcionan como firmas digitales. Por ejemplo, un remitente, Robert, quiere enviar un documento a alguien y el destinatario, Mary, quiere asegurarse de que el documento no haya sido manipulado mientras estaba en camino. El remitente, Robert, solo tiene que ejecutar el documento a través de una función hash, lo que da como resultado un valor numérico. Robert luego encripta la clave hash y envía el documento junto con la clave encriptada.

Mary recibe ambos elementos y descifra la clave hash. Ahora puede ver el valor numérico que resultó del documento antes de que se enviara. Para verificar que el documento en sus manos es exactamente el mismo, ejecuta el documento a través de una función hash en su computadora. Por último, compara ambas claves. Si son iguales, el documento no se modificó en su camino hacia el destinatario.

Existen muchas funciones hash diferentes, cada una con sus propias fórmulas matemáticas. Para que una función hash funcione, debe minimizar cualquier colisión, que ocurre cuando dos entradas de la base de datos tienen la misma clave hash. Las funciones hash también deben ser unidireccionales. Eso significa que puede producir una clave a partir de una entrada de base de datos o un documento, pero no al revés. En otras palabras, no se puede realizar una «ingeniería inversa» del documento original a partir de su clave hash.