The old tag does not match the changed-message recomputation.

highlighted = computed this step

The old tag no longer matches

The old tag is 0xe7. The changed message recomputes to 0xe8.

0xe70xe80xe7\ne 0xe8
Old tag failsThe changed-message rows are recomputed from the same key and pads.Old tag fails - tag e7 changes to e8rowvaluecheckblock size2two-byte toy blockkey0f0epinned keyipad3636inner padinner key pad3938key xor ipadinner input39386869inner key pad || messageinner hash420x142 to 0x42opad5c5couter padouter key pad5352key xor opadouter input535242outer key pad || inner hashfinal tage70xe7 to 0xe7changed message686aone message byte changedchanged inner hash430x143 to 0x43changed final tage80xe8 to 0xe8old tag checkfaile7 != e8

Receiver recomputes before accepting

With the same key, the receiver recomputes 0xe8 for the changed bytes, so old tag 0xe7 fails.

old tag check=fail\text{old tag check}=\text{fail}
Old tag failsThe changed-message rows are recomputed from the same key and pads.Old tag fails - tag e7 changes to e8rowvaluecheckblock size2two-byte toy blockkey0f0epinned keyipad3636inner padinner key pad3938key xor ipadinner input39386869inner key pad || messageinner hash420x142 to 0x42opad5c5couter padouter key pad5352key xor opadouter input535242outer key pad || inner hashfinal tage70xe7 to 0xe7changed message686aone message byte changedchanged inner hash430x143 to 0x43changed final tage80xe8 to 0xe8old tag checkfaile7 != e8

The shape is the lesson

The useful shape is key with inner pad, then key with outer pad. This toy hash is only here to make the bytes visible.

inner,outerinner,\quad outer
Old tag failsThe changed-message rows are recomputed from the same key and pads.Old tag fails - tag e7 changes to e8rowvaluecheckblock size2two-byte toy blockkey0f0epinned keyipad3636inner padinner key pad3938key xor ipadinner input39386869inner key pad || messageinner hash420x142 to 0x42opad5c5couter padouter key pad5352key xor opadouter input535242outer key pad || inner hashfinal tage70xe7 to 0xe7changed message686aone message byte changedchanged inner hash430x143 to 0x43changed final tage80xe8 to 0xe8old tag checkfaile7 != e8

Honesty boundary

NOTE: toy one-byte hash and 2-byte block only; not real HMAC, not SHA 256, not collision or preimage resistance, not AEAD, not nonce handling, not side channels, not production authentication.

toy only=1\text{toy only}=1
Old tag failsThe changed-message rows are recomputed from the same key and pads.Old tag fails - tag e7 changes to e8rowvaluecheckblock size2two-byte toy blockkey0f0epinned keyipad3636inner padinner key pad3938key xor ipadinner input39386869inner key pad || messageinner hash420x142 to 0x42opad5c5couter padouter key pad5352key xor opadouter input535242outer key pad || inner hashfinal tage70xe7 to 0xe7changed message686aone message byte changedchanged inner hash430x143 to 0x43changed final tage80xe8 to 0xe8old tag checkfaile7 != e8