What is MD5?
Give it a message, pops out a 128 bit number ("fingerprint" or "message digest").
Difficult to create a message that has a certain digest.
Difficult to create 2 messages with same digest.
Examples:
MD5 ("") = d41d8cd98f00b204e9800998ecf8427e
MD5 ("a") = 0cc175b9c0f1b6a831c399e269772661
MD5 ("abc") = 900150983cd24fb0d6963f7d28e17f72
Notes:
MD5 is a one way compression! Given a digest, can't determine the message.
[It is necessary, but unlikely, that 2 messages have the same digest. how many possible
messages are there? how many possible digests are there? (2**128). use the pigeonhole
principle -- considering that each message has a digest, eventually 2 messages will map
to the same digest.]