MD5, abreviatura de "Message Digest 5", quinto algoritmo de resumen de mensajes desarrollado por Ronald Rivest, esta descrito de manera completa (incluyendo implementacion en codigo C de dominio publico) en el RFC1321. Puedes consultarlo en http://www.ietf.org/rfc/rfc1321.txt?number=1321
Una advertencia: MD5 _no_ es un algoritmo de encriptacion, si no un una funcion de hashing criptograficamente fuerte. Esto quiere decir que MD5 se usa para autentificar mensajes y comprobar su integridad, no para cifrar mensajes. Algunos mecanismos de autentificacion de usuarios, como el crypt de BSD, emplean MD5; pero debes tener en cuenta que crypt es un mecanismo de autentificacion por password, no un metodo de cifrado.
Las funciones de hashing se definen por su resistencia a principalmente dos tipos de ataques (hay otros): preimagenes y colisiones. Hoy en dia se sabe que MD5 es vulnerable al calculo de colisiones, lo cual compromete un tanto su utilidad como mecanismo para evitar la falsificacion de mensajes, aunque las colisiones son muy costosas de calcular. MD5, hasta donde yo se, no es vulnerable a los ataques de calculo de preimagenes.
Mi sugerencia es que no emplees MD5, si no una variante mas fuerte, tal como SHA-1 o TIGER, que tambien estan en el dominio publico (mira por la red), y son mas modernos y potentes.
Saludos y todo eso,
C.