Talking to a friend about md5 collision, I found this interesting tool (fastcoll) and an example of a single block collision below (with only 2 bytes different):
Why single block collision? Check out this:
My ..sorta understanding of this:
If we have md5(blockA) = md5(blockB)
md5(messageA + blockA + messageB) = md5(messageA + blockB + messageB)
(As long as size of messageA is devidable by md5 block size-64 bytes)
Then we use the different between blockA and blockB within our logic code
for example: if block[index] == "\x5d" then blah... else blah...
in which, blockA[index] is "\x5d" and blockB[index] is something else.
In PDF version of this attack, the binary is used in Index Color Spaces and the different between 2 binaries change the grey scales of the text (visible or not)
To quickly generate fast collision, you can download fastcoll at http://www.win.tue.nl/hashclash/