I recently learned about message authentication codes at uni and the lecturer said that it's important to use a padding to make the message an integer multiple of a certain length before hashing because otherwise "many" hash function allow data to be appended without changing the hash.
I didn't mishear that. It's on a lecture slide.
This lecture slide also shows this titled "actual implementation":
HMAC(Key, M) = H((Key ⊕ opad) ∥ H(Key ⊕ ipad ∥ M))
Meaning of the symbols:
M: message
H: cryptographic hash function
Key: symmetrical key
opad, ipad: inner/outer padding
∥: concatenation
⊕: XOR
First of all, I find the "actual implementation" rather awkward. That probably should be opad
and ipad
n
times with n*length(opad) ≥ length(key)
and n*length(ipad) ≥ length(key)
.
But mostly, I find that hard to believe and can't seem to find anything about it on the internet. Does this actually occur with cryptographic hash functions?