MD5 Collision Attack Explained In one of my assignments, I came across this line


  Due to MD5’s length-extension behavior, we can append any suffix to both messages and know that the longer messages will also collide. This lets us construct files that differ only in a binary “blob” in the middle and have the same MD5 hash, i.e. prefix || blobA || suffix and prefix || blobB || suffix.


I am not quite understanding what "binary blob" means in this context. Does the blob have to be something in particular to ensure that the two files will continue to have MD5 collision?
Here, I think BLOB is meant to be interpreted as binary large object, and it refers to the 128 bytes of data that differ between the two files but which produce the same MD5 hash output.  Those are the two parts of the files that differ between the two programs but which yield the same MD5 partial result.

So look at it this way.  You start out hashing each file at the beginning and compute the interim hash value through the prefix.  Obviously both hashes will, at this point, be the same because the prefixes in both files are the same.

Now a new interim hash result is computed using the above mentioned result so far and the new chunk of data, the portion they refer to as BlobA and BlobB.  These data chunks differ but were constructed to yield the same MD5 output.  So after these middle sections are hashed, the partial hash for each file is still identical.

The hash process then continues on each file through the suffix, which like the prefix, is identical for both files.  So the output (final) MD5 hash will be the same.  At this point, my understanding of the passage you quoted is that if you have 2 files that hash to the same MD5 value, you can now append anything you like to the end of those files (as long as it is the same data for both files) and the MD5 hash will change for both files in exactly the same way, so they will continue to have identical hashes one to the other.