oh, here's a question if you need food for thought. Or thought for food.
What is it specifically that differentiates the MD5 hashing algorithm from, say, an MD5 encryption algorithm? That is to say; what line of code or part of the algorithm specifically makes sure the data is "hashed" and not "encrypted"?
This is my best guess:
I assume when you perform bitwise operations that do not result in loss of data, it can then be reversed to "decrypt" the data - however a hash like the MD5 continually drops data during the operation to finally come up with a result of 128-bit (16-byte) strings. The thing is, I can't seem to find any specific line of code or piece of the algorithm that does that. I'm probably missing something obvious, but if anyone else wants to give it a shot, i'm pretty curious to know exactly how it all works.
Also, this was interesting