CBC-MAC
メッセージ m ′′ {\displaystyle m''} を計算する場合、メッセージ m {\displaystyle m} の場合と同様タグ t {\displaystyle t} までは通常に計算される。しかし、続く E K M A C ( m 1 ′ ⊕ t ) {\displaystyle E_{K_{MAC}}(m_{1}'\oplus t)} の計算において、 t {\displaystyle t} と t {\displaystyle t} の排他的論理和を計算することとなるためこれは打ち消され、本来のメッセージ m {\displaystyle m} はMAC値に寄与しないこととなる( E K M A C ( m 1 ′ ⊕ t ⊕ t ) = E K M A C ( m 1 ′ ) {\displaystyle E_{K_{MAC}}(m_{1}'\oplus t\oplus t)=E_{K_{MAC}}(m_{1}')} であるからメッセージ m ′′ {\displaystyle m''} のCBC-MACタグは t ′ {\displaystyle t'} となる)。
この問題は、メッセージ長の情報を最後に追加することでは解決できない。可変長メッセージにおいてもCBC-MACを安全に利用するためには3つの主な改良法が存在する。一つ目は鍵の入力長の分割、2つめはメッセージ長の情報を先頭に追加すること、3つめは最後のブロックを暗号化することである。CMACやHMACのような、可変長メッセージでも安全な他の暗号利用モードを用いることも検討すべきである。