# ¿Qué es una función hash?

El crecimiento desorbitado de la cantidad de información que se procesa en las redes de datos locales y globales nos empuja a buscar constantemente maneras de acceder a grandes volúmenes de datos de forma más rápida y de garantizar la seguridad en el intercambio. Para esto, entre otras tecnologías de seguridad, la función *hash* es particularmente útil. Aquí te contamos sus propiedades y sus usos.

La voz inglesa *hash* significa *cortar*. Así, la función *hash* “**corta**” los datos y les da una **longitud uniforme**, sin importar el valor inicial. Esta función también recibe el nombre de *función de resumen* y se utiliza en muchas áreas de la informática, como las siguientes:

- La comunicación cifrada entre el servidor web y el navegador, así como la generación de [identificadores de sesión](https://www.ionos.es/digitalguide/hosting/cuestiones-tecnicas/que-es-un-session-id/) para aplicaciones de internet y el almacenamiento intermedio de datos (caché)
- La protección de datos confidenciales, como contraseñas, análisis web o formas de pago
- La firma de mensajes
- La identificación de registros idénticos o similares en funciones de búsqueda

---

### Definición

Función *hash*: la función *hash* se utiliza para uniformizar la longitud de cadenas originalmente diferentes. Por ejemplo, con la función *hash*, diferentes contraseñas reciben un número fijo de caracteres permitidos. Sin embargo, no es posible volver a convertir la cadena de caracteres del valor *hash* al original.

---

[![Imagen: Esquema de la función hash.](https://www.ionos.es/digitalguide/fileadmin/_processed_/2/b/csm_esquema-de-la-funcion-hash_94433d3885.webp "Esquema de la función hash.")](https://www.ionos.es/digitalguide/fileadmin/DigitalGuide/Schaubilder/esquema-de-la-funcion-hash.png) En este ejemplo, la función hash genera valores hash con longitudes uniformes a partir de contraseñas de longitudes diferentes y los almacena en la base de datos. Los valores no se pueden revertir.       ##  ¿Qué propiedades tiene una función hash?

Una función *hash* debe cumplir con los siguientes requisitos para tener las **propiedades** adecuadas:

### Función hash como proceso unidireccional

**No** se debe poder **recuperar** el contenido de los datos originales a partir del valor *hash* generado. De este modo, en el ejemplo anterior, a partir de “$P$Hv8rpLanTSYSA/2bP1xN.S6Mdk32.Z3”, no se debe poder recuperar la contraseña “susi\_562#alone”.

### Evitar colisiones con valores hash

Nunca debe suceder que se asigne el mismo valor *hash* a datos de origen distinto. Cada entrada debe generar un valor *hash* diferente. Si esto está garantizado, también se habla de una función *hash* **criptográfica**. En la imagen anterior, no hay valores *hash* idénticos y, por lo tanto, **no hay colisiones** entre los datos generados. Existen tecnologías más avanzadas para evitar estas colisiones.

### La función hash es ultrarrápida

Si la conversión de las entradas en un valor *hash* lleva mucho tiempo, este procedimiento no sería el adecuado. Por lo tanto, la función *hash* debe implementarse muy **rápidamente**. En las bases de datos, los valores hash se almacenan en las llamadas [tablas hash](https://www.ionos.es/digitalguide/servidores/seguridad/tablas-hash/ "Tablas hash") para asegurar un acceso rápido.

## ¿Qué valor hash se genera?

El valor *hash* generado por la función *hash* tiene una **longitud fija**, determinada por la tecnología de *hash* utilizada. El conjunto de caracteres del valor de entrada es irrelevante; **siempre se devuelve el mismo número de caracteres**. Los caracteres permitidos se definen en la función *hash*.

[![Imagen: Los valores hash siempre tienen la misma longitud.](https://www.ionos.es/digitalguide/fileadmin/_processed_/7/8/csm_hash-values-are-a-fixed-length_6c4a5c7624.webp "Los valores hash siempre tienen la misma longitud.")](https://www.ionos.es/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/hash-values-are-a-fixed-length.jpg) Los valores hash generados con el método SHA256 consisten en cadenas de caracteres que tienen siempre la misma longitud, independientemente del tipo y número de caracteres introducidos.       De este modo, el valor *hash* es el resultado calculado con la función *hash* y un algoritmo *hash*. El término ***fingerprint*** (huella dactilar) también se utiliza para nombrar al valor *hash*, ya que simboliza la singularidad de cada valor *hash*, comparable a la de nuestras huellas dactilares. Usando letras minúsculas de la “a” a la “f” y números del 0 al 9, con una longitud de valor *hash* de 64 caracteres, se pueden crear hasta **1,1579209e+77 combinaciones**, lo que significa un 70 seguido de 24 ceros. Esto demuestra que incluso las cadenas más cortas o con más caracteres utilizables producen una huella dactilar funcional.

Los valores *hash* mostrados en el ejemplo de función *hash* anterior se generan simplemente con unas pocas líneas de código PHP:

```none
<?php
echo hash('sha256', 'apple'); 
?>
```

En este ejemplo, el código siempre da como resultado el valor *hash* o la huella dactilar *3a42c503953909637f78dd8c99b3b85ddde362415585afc11901bdefe8349102*.

Al comando *hash* se le asignó el algoritmo de cifrado sha256 para la palabra *apple*.

## Función hash y sitios web

En las transmisiones de datos [cifradas por SSL](https://www.ionos.es/digitalguide/paginas-web/creacion-de-paginas-web/certificado-ssl/ "Certificado SSL"), el certificado del servidor se envía al navegador del usuario durante la consulta al servidor web. Después, se genera una clave de sesión con una función *hash* y esta se envía al servidor, donde se descifra y se verifica. Cuando el servidor confirma la clave de sesión recibida, comienza el tráfico de datos HTTP cifrado como [HTTPS](https://www.ionos.es/digitalguide/hosting/cuestiones-tecnicas/que-es-https/ "¿Qué es HTTPS?"). Los paquetes de datos intercambiados en el proceso también están cifrados, lo que hace **casi imposible interceptar** el tráfico de datos.

[![Imagen: Certificado de servidor con valores hash (huellas dactilares).](https://www.ionos.es/digitalguide/fileadmin/_processed_/e/f/csm_server-certificate-with-hash-values_eff6a522a9.webp "Certificado de servidor con valores hash (huellas dactilares).")](https://www.ionos.es/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/server-certificate-with-hash-values.jpg) En esta sección del certificado de la página web del servicio informativo alemán multilingüe Deutsche Welle, se ven, entre otras cosas, las claves con las que el servidor establece la comunicación con el navegador del usuario.       Las claves de sesión (**ID de sesión**) se generan a partir de datos variables de la visita a un sitio web, como la dirección IP y el cronomarcador, y se transmiten con el URL. Estas claves de sesión se necesitan, por ejemplo, para identificar de manera inequívoca a los usuarios de la cesta de la compra. Hoy en día la transmisión con el URL ha caído en desuso (por ejemplo: *www.domain.tld/index?sid=d4ccaf2627557c756a0762419a4b6695*). La identificación en el encabezado del sitio web como una ***cookie*** se ha vuelto más común.

El almacenamiento temporal de información en [cachés](https://www.ionos.es/digitalguide/hosting/cuestiones-tecnicas/que-es-una-cache/ "¿Qué es una caché?") se cifra también con valores *hash* para que los usuarios no autorizados no puedan sacar ninguna conclusión sobre los sitios web visitados y no puedan obtener los datos de acceso o de pago al ver el caché.

La comunicación entre el servidor **FTP y el cliente** es similar cuando se utiliza el [protocolo SFTP](https://www.ionos.es/digitalguide/servidores/know-how/sftp-ssh-file-transfer-protocol/ "SFTP (SSH File Transfer Protocol)").

## Protección de datos confidenciales

Los **datos de acceso** de las cuentas en línea son con frecuencia el objetivo principal de los ciberataques. Los piratas informáticos desean perturbar el funcionamiento de un sitio, por ejemplo, para reducir los ingresos por publicidad basada en el tráfico u obtener información sobre las formas de pago almacenadas.

[![Imagen: Identificación de las sesiones en WordPress.](https://www.ionos.es/digitalguide/fileadmin/_processed_/7/1/csm_identificacion-de-las-sesiones-en-wordpress_63f9575d8b.webp "Identificación de las sesiones en WordPress.")](https://www.ionos.es/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/identificacion-de-las-sesiones-en-wordpress.png) El sistema de gestión de contenidos WordPress ofrece muchas funciones de seguridad para la autenticación de los usuarios registrados. Las claves mostradas se generan con diversos algoritmos hash.       En el ejemplo de la página de WordPress, vemos que las **contraseñas siempre se codifican** antes de almacenarse. En combinación con las claves de seguridad generadas en el sistema, se alcanza un alto nivel de seguridad. Esto es especialmente importante como **protección** contra los llamados ataques de [fuerza bruta](https://www.ionos.es/digitalguide/servidores/seguridad/brute-force-definicion-y-medidas-de-proteccion/ "Brute force: definición y medidas de protección"), en los que el atacante utiliza una función *hash* especialmente programada para probar combinaciones hasta encontrar una que permita el acceso. Las contraseñas largas con altos estándares de seguridad dificultan estos ataques, porque la potencia de computación necesaria para descifrar la contraseña crece exponencialmente. Aquí, como siempre, repetimos el consejo: **nunca utilices contraseñas simples y asegúrate de mantener tus datos de acceso, sean del tipo que sean, a salvo del acceso no autorizado**.

## Firma de mensajes

El **tráfico de correo electrónico** pasa por servidores especialmente adaptados a esta forma de transmisión de mensajes. Las claves generadas por las funciones *hash* también se utilizan para transmitir datos en las [firmas digitales](https://www.ionos.es/digitalguide/correo-electronico/cuestiones-tecnicas/la-firma-digital-para-tu-correo-electronico/ "La firma digital para tu correo electrónico") de los mensajes.

[![Imagen: Información general de una firma de correo electrónico.](https://www.ionos.es/digitalguide/fileadmin/_processed_/3/c/csm_general-information-for-an-email-signature_7a034379f8.webp "Información general de una firma de correo electrónico.")](https://www.ionos.es/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/general-information-for-an-email-signature.jpg) La firma digital de un correo electrónico es comparable a la firma manuscrita de una carta: única e inequívoca.       Así funciona la **transmisión de mensajes** con una **firma digital**:

- El remitente calcula un valor *hash* para su mensaje y lo codifica con su clave privada (la firma digital).
- El mensaje se envía al destinatario junto con el valor *hash* codificado.
- El destinatario genera un valor *hash* del mensaje recibido utilizando la **misma función *hash***. Además, descifra el valor *hash* recibido con la clave pública y compara ambos.
- Si ambos valores **coinciden**, el destinatario puede asumir que el mensaje **no ha sido manipulado** en la ruta de transmisión.

Recuerda: una **firma digital no codifica el mensaje**, pero proporciona una prueba de su integridad. El contenido confidencial debe pasar por un proceso de codificación adicional.

## ¿Cómo ayuda la función hash a las funciones de búsqueda?

La búsqueda de **grandes cantidades de datos** es un proceso que requiere muchos recursos. Imagina buscar un término en una tabla con muchos campos (nombre, apellido, calle, etc.) que contiene todos los habitantes de una gran ciudad. Esto puede llevar mucho tiempo y requerir mucha potencia de computación. Para simplificar el proceso, se calcula un valor *hash* para cada objeto de datos, que identifica de manera única cada entrada. Para buscar en la tabla, se calcula de nuevo un valor *hash* a partir del término de búsqueda, que luego se compara con los valores *hash* existentes. Se compara un número limitado de letras, dígitos y caracteres con las letras, dígitos y caracteres existentes. Este proceso es mucho más eficaz que la búsqueda en todos los campos de una tabla de datos.

---

### En resumen

Las funciones *hash* se utilizan para mejorar la seguridad en la comunicación electrónica. Los estándares de seguridad se han vuelto muy sofisticados. Sin embargo, los piratas informáticos tampoco descansan, por lo que los ataques también se están volviendo cada vez más complejos.

---


This is a markdown version of: [https://www.ionos.es/digitalguide/servidores/seguridad/funcion-hash/](https://www.ionos.es/digitalguide/servidores/seguridad/funcion-hash/) for AI/LLM consumption.