Merkle-Damgård Revisited: How to Construct a Hash Function -- On the Generic Insecurity