HMAC
5c5c}}} )、" | | {\displaystyle ||} "はビット列の連結、" ⊕ {\displaystyle \oplus } "は排他的論理和を表す。繰り返し型ハッシュ関数は、任意長の入力を固定長のブロックに分割してから、ブロック毎に圧縮関数で処理することでハッシュ値を求める。例えば、SHA-256では1ブロックは512ビットである。HMACでは、 ( K ⊕ o p a d ) {\displaystyle (K\oplus opad)} と ( K ⊕ i p a d ) {\displaystyle (K\oplus ipad)} がちょうど1ブロックとなるように、秘密鍵と定数パディングの長さが調整される。もし秘密鍵 K {\displaystyle K} が1ブロックより短い場合は、 K {\displaystyle K} を先頭に寄せて末尾に0x00を必要なだけ追加してブロック長にする。また、定数パディングはちょうど1ブロックになるように0x5cあるいは0x36を繰り返す。例えば、ハッシュ関数のブロック長が 512ビット(64オクテット)ならば、ipad と opad は、それぞれ64オクテットの 0x36 や 0x5c の連続である。