Single block MD5 collision with 2 bytes different.

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):

  • 0E306561559AA787D00BC6F70BBDFE3404CF03659E704F8534C00FFB659C4C87

  • 0E306561559AA787D00BC6F70BBDFE3404CF03659E744F8534C00FFB659C4C87

Why single block collision? Check out this:

My ..sorta understanding of this:

If we have md5(blockA) = md5(blockB) then: 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

comments powered by Disqus