Let's say I have an input message of "enoughly long" length (I'll got for a 128 bytes long message, but it might be 256 or whatever).
I know the hash sha1(message || secret) where || is byte concatenation.
Since the message is long enough and knowing how sha1 works, I can tell that the message will be split into chunks. Each chunk will be hashed, leading to an "internal state machine", reused to hash next chunk, and only the internal state before hashing the first chunk involving the secret actually matters to the result hash.
So, in theory, this means I could tamper the message into another thing message2, and have the same hash result sha1(message2 || secret) so long I can keep the internal state unchanged.
Is there a way to do so? Is there a way to built a message2 so that sha1(message2 || secret) == sha1(message || secret) when I know message and fully control message2 (including its length)? If there is, how to do so? It's not a length extension attack, but it feels like the same kind of process could be used, but I can't find it.