4. Troncation (Truncation)
4.1 Note d'implémentation (Implementation Note)
HMAC est défini de manière à pouvoir utiliser la fonction de hachage sous-jacente H sans modifier son code. En particulier, H est utilisée comme une fonction possédant une valeur initiale prédéfinie IV (une valeur fixe que chaque fonction de hachage itérative spécifie pour initialiser sa fonction de compression). Dans les implémentations courantes des fonctions de hachage cryptographiques, IV est stockée comme une constante codée en dur. Une méthode efficace pour implémenter HMAC consiste à précalculer cet IV en tant qu'état interne initialisé avec K XOR opad et K XOR ipad. (Toutefois, cette optimisation ne fait pas partie de la spécification de HMAC ; il s'agit d'un détail d'implémentation.)
4.2 Sortie tronquée (Truncated Output)
Certaines applications peuvent souhaiter utiliser seulement n octets de la sortie HMAC (où n est inférieur ou égal à la longueur de hachage L, c'est-à-dire n ≦ L). Il est recommandé que cette sortie tronquée soit constituée des n premiers octets du HMAC. La sortie tronquée de HMAC est déterminée de façon unique pour une clé et un texte donnés. Pour distinguer la sortie tronquée de la spécification du HMAC, la sortie tronquée de n octets d'un HMAC est notée HMAC-H-t (où H est la fonction de hachage et t la longueur de sortie en octets). Par exemple, les 8 premiers octets de HMAC-MD5 sont notés HMAC-MD5-80 (80 représentant la longueur en bits).
Lors de l'utilisation d'une sortie tronquée de n octets, il est recommandé que n soit d'au moins 10 octets (80 bits). Cela permet de fournir une force de sécurité de 80 bits contre les attaques par force brute. Une troncature inférieure à 10 octets est déconseillée.