It's one thing to brute force two texts with the same md5Indeed it is - and there's a Win32 executable at
http://cryptography.hyperlink.cz/2006/program_v1_pd.zip that creates collisions in approximately 30 seconds - though I doubt it does this by using brute force.
I see the shortcoming of your challenge as follows:
You allow padding of the string - so, instead of having:
$text = 'the quick brown fox jumps over the lazy dog';
let's have it so that:
$text1 = 'the quick brown fox jumps over the lazy dog' . ' ' x 85;
$text1 now has a length of 128 bytes, and a hex digest (let's call it $hash) of 8ba2a86e374afd2aefc8e5378f9149a2. I can now get a free lunch if I can find another 128-byte string (let's call it $text2) that hashes to 8ba2a86e374afd2aefc8e5378f9149a2. That's not straightforward (for me, anyway), and even less straightforward if $text2 has to be "meaningful" - but the thing is that your requirement of having to hash $text1 . $hash
has not made the task any more difficult.
If both $text2 and $text1 hash to the same value (ie, to $hash), then $text1.$hash and $text2.$hash both hash to the same value. And the code I posted demonstrates that. If the string is 128 bytes long I don't believe the "multiplier effect" of which you speak exists. (If the string is, say, 119 bytes long, then there quite possibly
is a "multiplier effect".)
Maybe a sandwich and a cup of tea ? ... the sandwich is optional ... so is the cup of tea :-)
Cheers,
Rob