An MD5 hash is a 32-byte (if I recall) string that you get by running an arbitrary amount of data through an MD5 hashing algorithm. It's not a reversible algorithm, but it is reproducible... the same chunk of data will always produce the same MD5 hash, but you can't get that data out of the hash.
It's used for storing passwords (so a cursory glance at a passwd file won't give you everyone's passwords) and things like getting unique IDs for server sessions and so on.
It's complicated, but
this seems like a pretty good step-by-step. I'd write it myself, but I'd rather concentrate my my limited time elsewhere at the moment (it doesn't look entirely trivial to implement). Hopefully, though, this'll help someone on their way to making it. It would be a useful library, no doubt. :)