Say that I have good, collision resistant hash function
H. Given a message
M, the typical usage is
h=H(M) to get it's hash.
Now, I want to propose two alternative methods of using this hash function, and compare them to the original function. First, I split my message
M into equally sized chunks
First method: the hash would be
⊕ is XOR).
Second method: the hash would be
h=H(M1,1)⊕h(M2,2)⊕...⊕h(Mn,n), where comma means concatenation.
Now, it's obvious that the first hashing method is poor - I can shuffle the chunks around, and add two equal chunks without changing the resulting hash. But what about the second method? Are there any attack vectors? How does it compare to the original hash function?