Una función hash es una función computable mediante un algoritmo, que tiene como entrada un conjunto de elementos, que suelen ser cadenas, y los convierte en un rango de salida finito, normalmente cadenas de longitud fija.
Propiedades:
- Unidireccionalidad. Conocido un hash, debe ser computacionalmente imposible encontrar el mensaje a partir de dicho hash.
- Compresión. A partir de un mensaje de cualquier longitud, el hash debe tener una longitud fija. Lo normal es que la longitud de hash sea menor.
- Facilidad de cálculo. Debe ser fácil calcular hash a partir de un mensaje.
- Difusión. El hash debe ser una función compleja de todos los bits del mensaje. Si se modifica un bit del mensaje, el hash debería cambiar aproximadamente la mitad de sus bits.
Utilidades:
- Códigos de detección de modificaciones
- Códigos de autenticación de mensajes
