Construcción Merkle–Damgård
La receta para construir una función hash a partir de una función de compresión, bloque a bloque, con relleno y un campo de longitud.
Ralph Merkle describió el principio en su tesis de 1979, e Ivan Damgård lo formalizó en 1989. El mensaje se divide en bloques y se rellena, y cada bloque pasa por una función de compresión junto con el resultado del paso anterior. MD5, SHA-1 y SHA-256 se construyen todas así.
La construcción tiene una debilidad conocida: el ataque de extensión de longitud. Quien conoce el hash de un mensaje y su longitud puede calcular el hash del mensaje con un sufijo añadido, sin conocer el contenido original. Por eso HMAC envuelve el hash en lugar de hashear clave y mensaje directamente, y SHA-3, basado en un diseño distinto, se eligió como estándar aparte.