As we all know, the two blocks
produce an MD5 collision. I thought it would be interesting to visualise MD5’s internal state for these two blocks.
The bits go horizontally, and the rounds vertically. A white square is zero for both blocks, black is one for both blocks, red is one for the first and zero for the second and green is zero for the first and one for the second.
The first block of bits, to the left, is the input used in that round (32 bits per round). The remainder are A, B, C and D, the internal state (32 bits each). There is a horizontal break at the end of each input block.
By contrast, here’s what it looks like if the second block is the same as the first but with the MSB flipped in the first byte.