Ein Digest nach Merkle–Damgård ist der vollständige interne Zustand nach dem letzten Block, daher kann ein Angreifer ihn laden und weiterhashen. Authentifiziert ein Dienst Anfragen mit SHA-256(secret ‖ params), kann jeder, der ein gültiges Tag sieht, &admin=1 anhängen (nach den Padding-Bytes) und ein gültiges Tag für die längere Nachricht berechnen. Genau daran scheiterten 2009 die auf MD5 basierenden API-Signaturen von Flickr.
Nicht betroffen sind HMAC (der äußere Hash verbirgt den inneren Zustand), SHA-3 und die SHAKE-Funktionen (die Kapazität wird nie ausgegeben), BLAKE2 und BLAKE3 sowie gekürzte SHA-2-Varianten wie SHA-384 und SHA-512/256, deren Ausgabe einen Teil des Zustands weglässt. Signaturverfahren hashen die Nachricht vor dem Signieren und sind ebenfalls nicht betroffen.
Die Regel ist einfach: Baue nie einen MAC als hash(key ‖ message) aus SHA-1 oder SHA-256; nutze HMAC, KMAC oder BLAKE2 mit Schlüssel.